题意:给定若干个居民的年龄(都是1-100之间的整数),把它们按照从小到大的顺序输出。
输入第一行为整数n(0<n<=2000000),第二行为n个整数,输入结束标志n=0。输入文件约25MB,内存限制为2MB。
思路:数据太大,内存限制太紧,连把数据全读进内存都不行,所以什么快排之类的排序报废了,但是注意到这里整数范围很小,可以用计数排序。
#include<stdio.h>
#include<string.h>
int main()
{
int n,x,c[101],i,j;
while(scanf("%d",&n)==1&&n)
{
memset(c,0,sizeof(c));
for(i=0;i<n;i++)
{
scanf("%d",&x);
c[x]++;//计数
}
int flag=0;
for(i=1;i<=100;i++)
for(j=0;j<c[i];j++)
{
if(flag) printf(" "