算法竞赛入门经典 高效算法之年龄排序

算法竞赛入门经典 高效算法之年龄排序

要求:输入文件约25M,而运行限制内存只有2M。

/*
	Name: 高效算法之年龄排序 
	Copyright: 刘汝佳 
	Author: Analyst 
	Date: 01/03/14 13:29
	Description: dev-cpp 5.5.3
*/
#include <stdio.h>
#include <string.h>     // 为了使用menset函数 

int main()
{
	int n, x, c[101];
	
	while (scanf("%d", &n) == 1 && n)
	{
		memset(c, 0, sizeof(c));  //将数组c[101]全部初始化为0 
		for (int i = 0; i < n; ++i)
		{
			scanf ("%d", &x);
			++c[x];
		}
		int first = 1;            //标志first=1 表示还没有输出过整数 
		
		for (int i = 1; i <= 100; ++i)
			for (int j = 0; j < c[i]; ++j)
			{
				if (!first) printf(" ");   //从第二个数开始,每输出一个数之前输出一个空格 
				first = 0;
				printf("%d",i);
			}
		printf("\n");
	}
	return 0;
}

ps:年龄整数范围很小(1~100),这里用计数排序。很好!!!

memset函数解释:

memset(c, 0, sizeof(c));  //将数组c[101]全部初始化为0

相当于:

for (int i = 0; i < sizeof(c); ++i)

{

        c[i] = 0;

}

其中因为int c[101],所以sdizeof(c) = 100;


你可能感兴趣的:(算法竞赛入门经典 高效算法之年龄排序)