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

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

要求:输入文件约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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值