xynuoj1223 数组排序

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;
}

 

来源

猜你喜欢

转载自blog.csdn.net/cao2219600/article/details/79920479