首页 > 代码库 > Uva-------(11462) Age Sort(计数排序)

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.


Problem Setter: Mohammad Mahmudur Rahman

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 }
View Code