用C语言对一维数组排序,并输出原来的位置

如题所述

可以先用冒泡排序对数组进行排序,然后对排序的数组进行遍历,找出其在排序之前数组中的位置,参考代码如下:

 #include<stdio.h>
#include<string.h>
#define N 5
int main()
{
    int a[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");
    return 0;
}



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