题目大意:
给定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");
}
}