1223: 数组排序
时间限制: 1 Sec 内存限制: 32 MB提交: 32 解决: 8
您该题的状态:已完成
[提交][状态][讨论版][Edit] [TestData]
题目描述
输入一个数组的值,求出各个值从小到大排序后的次序。
输入
输入有多组数据。
每组输入的第一个数为数组的长度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> #include<algorithm> using namespace std; struct node{ int val; int pos;//输入的顺序 int poss;//从小到大排序后的次序 }num[10005]; bool cmp(node a,node b) { return a.val<b.val; } bool cmp2(node a,node b) { return a.pos<b.pos; } int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d",&num[i].val); num[i].pos=i; } sort(num+1,num+1+n,cmp); for(int i=1;i<=n;i++) num[i].poss=i; sort(num+1,num+1+n,cmp2); printf("%d",num[1].poss); for(int i=2;i<=n;i++) printf(" %d",num[i].poss); printf("\n"); } return 0; }