c++高手解答下排序问题

a[5]={5,15,40,2,18};排序后 2 5 15 18 40 现要得到b数组 b[5]={2,3,5,1,4},注意不是原数组下标,而是原数组排序序号,如第一个5是第二大,所以b[0]=2,其他类推。

#define N 5
#include <iostream>
using namespace std;
void mysort(int a[],int b[],int n){
int i,j,c[n],tmp;
for(i=0;i<n;i++) c[i]=i+1;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if (a[i]>a[j]){
tmp=a[i];a[i]=a[j];a[j]=tmp;
tmp=c[i];c[i]=c[j];c[j]=tmp;
}
for(i=0;i<n;i++)
b[c[i]-1]=i+1;
}
void printit(int a[],int n){
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int main(){
int a[N]={5,15,40,2,18};
int b[N],i;
for(i=0;i<N;i++) b[i]=i+1;
cout<<"排序前的a:";
printit(a,N);
cout<<"排序前的b:";
printit(b,N);
mysort(a,b,N);  //进行排序运算 
cout<<"排序后的a:";
printit(a,N);
cout<<"排序后的b:";
printit(b,N);
}

追问

你的b不对啊,哦,看错了,谢了

温馨提示:答案为网友推荐,仅供参考