您的位置:首页 > 其它

Uva-------(11462) Age Sort(计数排序)

2014-08-05 00:26 573 查看
B

Age Sort

Input: Standard Input

Output: Standard Output

You are given the ages (in years) of all people of a country with at least 1 year of age. You know that no individual in that country lives for 100 or more years. Now, you are given a very simple task of sorting all the ages in ascending order.

Input
There are multiple test cases in the input file. Each case starts with an integer n (0<n<=2000000), the total number of people. In the next line, there are n integers indicating the ages. Input is terminated with a case where n = 0. This case should not be processed.

Output

For each case, print a line with n space separated integers. These integers are the ages of that country sorted in ascending order.

Warning: Input Data is pretty big (~ 25 MB) so use faster IO.

Sample Input Output for Sample Input

5

3 4 2 1 5

5

2 3 2 3 1

0

1 2 3 4 5

1 2 2 3 3

Note: The memory limit of this problem is 2 Megabyte Only.

[align=center][/align]
Problem Setter: Mohammad Mahmudur Rahman

Special Thanks: Shahriar Manzoor

数据大,内存小,而数据值的范围有限,适合运用计数排序求解...

代码:

#include<cstdio>
#include<cstring>
/*计数排序*/
int main()
{
int n,hash[101],val;
while(~scanf("%d",&n)&&n)
{
memset(hash,0,sizeof(hash));
for(int i=0;i<n;i++)
{
scanf("%d",&val);
hash[val]++;
}
int flag=true;
for(int i=0; i<=100; i++)
{
for(int j=1;j<=hash[i];j++)
{
if(flag)
{
printf("%d",i);
flag=false;
}
else printf(" %d",i);
}
}
puts("");
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: