/*桶的时间复杂度为O(M + N)*/
//#include <stdio.h>
//int main()
//{
// int a[11], i, j, t;
// for (i = 0; i <= 10; i++)
// a[i] = 0; //初始化为0
// for (i = 1; i <= 5; i++) //循环读入5个数
// {
// scanf("%d", &t); //把每一个数读到变量t中
// a[t]++; //进行计数
// }
// for (i = 10; i >= 0; i--) //依次判断a[0]~a[10]
// for (j = 1; j <= a[i]; j++) //出现了几次就打印几次
// printf("%d ", i);
// getchar(); getchar();
// //这里的getchar();用来暂停程序,以便查看程序输出的内容
// //也可以用system("pause");等来代替
// return 0;
//}
/******************************************
示例输入: *
5 3 5 2 8 *
示例输出: *
8 5 5 3 2 *
*******************************************/
#include <stdio.h>
int main()//最终桶排序的时间复杂度为 O(m+n)
{
int book[1001], i, j, t, n;
for (i = 0; i <= 1000; i++)
book[i] = 0;
scanf("%d", &n);//输入一个数n,表示接下来有n个数
for (i = 1; i <= n; i++)//循环读入n个数,并进行桶排序
{
scanf("%d", &t); //把每一个数读到变量t中
book[t]++; //进行计数,对编号为t的桶放一个小旗子
}
for (i = 1000; i >= 0; i--) //依次判断编号1000~0的桶
for (j = 1; j <= book[i]; j++) //出现了几次就将桶的编号打印几次
printf("%d ", i);
getchar(); getchar();
return 0;
}
/******************************************
示例输入: *
10 *
8 100 50 22 15 6 1 1000 999 0 *
示例输出: *
1000 999 100 50 22 15 8 6 1 0 *
*******************************************/