1223: 数组排序
时间限制: 1 Sec 内存限制: 32 MB
提交: 73 解决: 33
您该题的状态:已完成
[提交][状态][讨论版]
题目描述
输入一个数组的值,求出各个值从小到大排序后的次序。
输入
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
输出
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
样例输入
<span style="color:#333333"><span style="color:black">1
68
15
1 70 25 79 59 63 65 6 46 82 28 62 92 96 43
</span></span>
样例输出
<span style="color:#333333"><span style="color:black">1
1 11 3 12 7 9 10 2 6 13 4 8 14 15 5</span></span>
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
int v;
int id; //输入时的次序
int idi; //排序后的次序
}k[10001];
bool cmp(node x,node y)
{
return x.v<y.v;
}
bool cmpp(node x,node y)
{
return x.id<y.id;
}
int main()
{
int n,i;
while(~scanf("%d",&n))
{
for(i=1;i<=n;i++)
{
scanf("%d",&k[i].v); k[i].id=i;
}
sort(k+1,k+1+n,cmp);
for(i=1;i<=n;i++)
k[i].idi=i;
sort(k+1,k+1+n,cmpp);
printf("%d",k[1].idi);
for(i=2;i<=n;i++)
{
printf(" %d",k[i].idi);
}
printf("\n");
}
}