1223: 数组排序
时间限制: 1 Sec 内存限制: 32 MB
提交: 101 解决: 54
您该题的状态:已完成
[提交][状态][讨论版]
题目描述
输入一个数组的值,求出各个值从小到大排序后的次序。
输入
输入有多组数据。
每组输入的第一个数为数组的长度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>
提示
来源
#include<iostream>
#include<stdlib.h>
#include<cstdio>
#include<algorithm>
using namespace std;
struct k
{
int s;
int e;
int w;
}a[10001],b[10001];
int cmp(k x,k y)
{
return x.s<y.s;
}
int cmp1(k x,k y)
{
return x.w<y.w;
}
int main()
{
int n,m,i,j;
while(~scanf("%d",&n))
{
getchar();
for(i=0;i<n;i++)
{
scanf("%d",&a[i].s);
a[i].w=i+1;
}
sort(a,a+n,cmp);
for(i=0;i<n;i++)
{
a[i].e=i+1;
}
sort(a,a+n,cmp1);
for(i=0;i<n;i++)
if(i==0)
printf("%d",a[i].e);
else
printf(" %d",a[i].e);
printf("\n");
}
return 0;
}