#217. 初级桶排序

初级桶排序

题目描述

小 J 最近终于学到了数组,他知道使用数组就可以对一个数列进行排序了!

今天,他小试牛刀,使用数组来对 nn 个数字进行排序。你也会做吗?

输入格式

第一行一个正整数 n(0<n104)n(0 \lt n \le 10^4)

第二行连续输入 nn 个不大于 10410^4 的非负整数。

输出格式

一行,输出这 nn 个数从小到大排序后的结果,中间用一个空格隔开。如果一个数出现了多次,在排序结果里只写一次即可。

输入输出样例

5
3 7 0 2 4
0 2 3 4 7
5
1 2 1 2 1
1 2

说明/提示

桶排序

通过观察我们发现连续输入 nn 个不大于 10410^4 的非负整数,这样的数刚好可以用来做数组的下标。

我们现在对数组的使用方法还只有一种:

a[i] = x; 表示第 ii 个数是 xx

现在我们想想,它还能不能反着用呢?

c[x]=1; 代表什么呢?

表示 xxaa 数组中出现了 1 次。

cc 数组我们称之为“桶”,用来记录一个数在另一个数组中出现的次数。

我们令 ii 从 0 开始,循环到输入的数的最大值结束,只要 c[i]c[i] 不为 0,就将 ii 输出即可。

特别注意:cc数组的大小与输入的数的最大值有关,且输入的数必须全部为自然数,可以作为数组下标。