扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
能简短的说明一下你想要什么么,我的理解是给我一个数组,让我排序,最后输出一个从小到大(或从大到小)的数组的原数组元素下表。
创新互联-专业网站定制、快速模板网站建设、高性价比芦山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式芦山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖芦山地区。费用合理售后完善,十年实体公司更值得信赖。
比如是s[10]={21,51,12,0,61,81,91,41,71,31} 排序后a[10]={0,12,21,31,41,51,61,71,81,91}
输出为3,2,0,9,7,1,4,8,5,6对应0:s[3]=0,1:s[2]=12,2:s[0]=21,。。。。。。是这样不?
用索引做排序就可以了
void select_sort(int *a, int len) {
int Min;
int *index;
index=(int *)new int[len];
for ( int i=0;ilen;i++ ) index[i]=i;
for (int i = 0; i len - 1; i++) {
for (int j = 1 + i; j len; j++) {
if (a[index[i]] a[index[j]]) {
Min=index[i];
index[i]=index[j];
index[j]=Min;
}
}
}
for ( int i=0;ilen;i++ ) coutindex[i]' '; coutendl;
for ( int i=0;ilen;i++ ) couta[index[i]]' '; coutendl;
delete [] index;
}
#include stdio.h
void main(void)
{
int i, j;
int a[5] = {5, 4, 2, 3, 1};
int b[5] = {0, 1, 2, 3, 4}; //下标序号,数量多就自增赋值
int c , d;
printf("原数组:\n");
for(i = 0; i 5; i++)
{
printf("%2d", a[i]);
}
for(i = 0; i 5; i++)
{
for(j = 4 - i; j 4; j++)
{
if(a[j] a[j+1])//从小到大 冒泡法 交换大小 同时交换下角标
{
c = a[j];
a[j] = a[j+1];
a[j+1] = c;
d = b[j];
b[j] = b[j+1];
b[j+1] = d;
}
}
}
printf("\n数组:\n");
for(i = 0; i 5; i++)
{
printf("%2d", a[i]);
}
printf("\n下标:\n");
for(i = 0; i 5; i++)
{
printf("%2d", b[i]);
}
getchar();
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流