# Uva-------（11462） Age Sort(计数排序)

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 (0<n<=2000000), the total number of people. In the next line, there are integers indicating the ages. Input is terminated with a case where = 0. This case should not be processed.

#### Output

For each case, print a line with 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.

Special Thanks: Shahriar Manzoor

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

代码：

``` 1 #include<cstdio>
2 #include<cstring>
3 /*计数排序*/
4 int main()
5 {
6     int n,hash[101],val;
7     while(~scanf("%d",&n)&&n)
8     {
9        memset(hash,0,sizeof(hash));
10        for(int i=0;i<n;i++)
11        {
12          scanf("%d",&val);
13          hash[val]++;
14        }
15        int flag=true;
16        for(int i=0; i<=100; i++)
17        {
18          for(int j=1;j<=hash[i];j++)
19          {
20              if(flag)
21              {
22                  printf("%d",i);
23                  flag=false;
24              }
25              else printf(" %d",i);
26          }
27        }
28        puts("");
29     }
30     return 0;
31 }```

657 篇文章64 人订阅

0 条评论