NYOJ 1080 年龄排序(计数排序)

年龄排序

时间限制: 2000  ms  |  内存限制: 240000  KB
难度: 0
描述

JXB经常向HJS炫耀他们家乡那里有多么多么好,但是HJS大牛从来对此不屑一顾,某日,他又在那说:“我们那里的人寿命都很高,甚至还有一个150岁的老人呢!”,这次HJS大牛准备调查一下,于是收集了那里每个人的年龄数据,首先得把它们从小到大排序,这个简单的任务就交给你了!

输入
第一行一个n,表示n个数(n<=6000000)
第二行有n个数,表示该地区每个人的年龄
数据只有一组
输出
按递增序列输出这些年龄
样例输入
6
2 5 6 9 15 3
样例输出
2 3 5 6 9 15
提示
由题意,所有人的年龄<=150

 

 

题解:尴尬,涨姿势了。快排不行,用线性排序。

 

代码如下:

 

#include<cstdio>
#include<cstring>
int a[160];
int main()
{
	int n,i,j,k,max;
	while(scanf("%d",&n)!=EOF)
	{
		memset(a,0,sizeof(a));
		max=0;
		for(i=0;i<n;++i)
		{
			scanf("%d",&k);
			a[k]++;
			if(max<k)
				max=k;
		}
		for(i=0;i<=max;++i)
		{
			for(j=0;j<a[i];++j)
			{
				if(i==max&&j==a[i]-1)
					printf("%d\n",i);
				else	
				 	printf("%d ",i);
			}
		}
	}
	return 0;
} 


 

你可能感兴趣的:(NYOJ 1080 年龄排序(计数排序))