C语言(30)年龄排序

描述

JXB经常向HJS炫耀他们家乡那里有多么多么好,但是HJS大牛从来对此不屑一顾,某日,他又在那说:“我们那里的人寿命都很高,甚至还有一个150岁的老人呢!”,这次HJS大牛准备调查一下,于是收集了那里每个人的年龄数据,首先得把它们从小到大排序,这个简单的任务就交给你了!

输入

第一行一个n,表示n个数(n<=6000000)
第二行有n个数,表示该地区每个人的年龄
数据只有一组

输出

按递增序列输出这些年龄

样例输入

6
2 5 6 9 15 3

样例输出

2 3 5 6 9 15

提示

由题意,所有人的年龄<=150

 

 

#include <stdio.h>

/* 
		年龄排序
刚开始想到归并排序效率高,写了一长串代码结果还是超时;
本题思路:
1、数据个数不超过6000000(<=6000000),不可能用普通直接排序完成
2、年龄都不超过150(0<=age&&age<=150),数据个数超过150时,一定会重复

所以我们可以直接统计数据0--150出现的个数

*/

int main(int argc, char **argv)
{
	int n,i,j,age;
	int time[151]={0};
	

	scanf("%d", &n);

	for(i=0; i<n; i++){
		scanf("%d", &age);
		time[age] += 1;
	}
	
	for(i=0; i<151; i++){
		for(j=0; j<time[i]; j++){
			printf("%d ", i);
		}
	}
	printf("\n");

	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值