题目描述
输入一个数组的值,求出各个值从小到大排序后的次序。
输入
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
输出
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
样例输入
1 68 15 1 70 25 79 59 63 65 6 46 82 28 62 92 96 43
样例输出
1 1 11 3 12 7 9 10 2 6 13 4 8 14 15 5
代码
#include<stdio.h>
#define N 10000
int main()
{
int i,j,n,temp;
int a[N],b[N];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
}
//输入数组元素,并复制
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
//在副本数组中用冒泡法排序
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{
if(a[i]==b[j])
printf("%d",j+1);//j+1是因为数组的下标与次序之间的关系
}
//输出排序后的次序
if(i == n-1)
printf("\n");
else printf(" "); //保证最后一个数字后面没有空格
}
}
return 0;
}
分析:注意审题,求出各值从小大大排序后的次序,最后一个数字后面没有空格~~~