uva11462 - Age Sort

题目大意:

给定n个居民的年龄(1-100),按从小到大输出

输入:

第一行一个整数n表示人数(0<n<=2000000)。

接下来n个整数表示居民的年龄。

输出:

居民年龄从小到大输出。每个年龄之间一个空格。

分析:

这道题目很简单,关键是n很大,不可开数组全部存储后使用sort解决,不然太水了(虽然也很水)。

既然不能全部存储那我们怎么解决呢,查看数据可知年龄的范围是1-100所以可以开一个数组计入1-100这100个数一共有几个,然后从小到大输出就可以了。

分类:简单排序

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main ()
{
    int hashs[110];
    int n,x;
    while(scanf("%d",&n),n)
    {
        memset(hashs,0,sizeof(hashs));
        for(int i=0;i<n;++i)
        {
            scanf("%d",&x);
            hashs[x]++;
        }
        int f=1;
        for(int i=1;i<=100;++i)
        {
            for(int j=0;j<hashs[i];++j)
            {
                if(!f)
                    printf(" ");
                f=0;
                printf("%d",i);
            }
        }
        printf("\n");
    }
}

  

posted @ 2013-07-08 21:24  默默如潮  阅读(217)  评论(0编辑  收藏  举报