可以先用冒泡排序对数组进行排序,然后对排序的数组进行遍历,找出其在排序之前数组中的位置,参考代码如下:
#include#include#defineN5intmain(){ inta[N],b[N],c[N],i,j,temp; for(i=0;i<N;i++){//输入数组,并用b保存数组a的值 scanf(%d,&a[i]); b[i]=a[i]; } for(i=0;i<N-1;i++)//对a从大到小冒泡排序 for(j=0;j<N-i-1;j++) if(a[j]<a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } for(i=0;i<N;i++)//输出排序后的a printf(%d,a[i]); printf(\n); for(i=0;i<N;i++)//遍历找出以前的位置 for(j=0;j<N;j++){ if(a[i]==b[j]) c[i]=j; } for(i=0;i<N;i++)//输出位置数组 printf(%d,c[i]+1); printf(\n); return0;}/*运行结果:384768764324531*/