输入数字,从高到低进行排序
#include <stdio.h>
int main()
{
int book[1001],i,j,t,n;
for(i=0;i<=1000;i++) //m代表循环m次(m为桶的个数)
{
book[i]=0;
}
scanf("%d",&t); //输入一个数n,表示接下来有n个数
for(i=1;i<=n;i+ +)
{
scanf("%d",&t);
book[t]++;
}
for(i=1000;i>=0;i--) //n代表为待排序数的个数
{
for(j=1;j<=book[i];j++)
printf("%d",i);
}
return 0;
}
先输入:6(代表排序6个数字)
再输入:8 100 50 22 15 6 1 1000 999 0
运行结果:1000 999 100 50 22 15 8 6 1 0
时间复杂度为:O(m+n)
此算法的缺点是:非常浪费空间,例如需要排序数的范围是0-5000000,那你则需要申请5000000个变量,也就是定义a[5000000]个元素