能簡短的說明一下你想要什么么,我的理解是給我一個數(shù)組,讓我排序,最后輸出一個從小到大(或從大到小)的數(shù)組的原數(shù)組元素下表。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比蘆山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式蘆山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋蘆山地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
比如是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};?//下標序號,數(shù)量多就自增賦值
int?c?,?d;
printf("原數(shù)組:\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數(shù)組:\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();
}