是将[0,1]区间划分为n个等长的子区间。然后,将各个元素按照自己所属的区间放入相应的桶中,只需要将每个桶的元素排好序,依次输出各个桶内的元素,就得到了有序的元素序列
不基于比较的排序
#include<iostream>
using namespace std;
int main()
{
int book[1001],i,j,t,n;
for(i = 0;i <= 1000; i++)//桶的个数
book[i]=0;//先初始化为0
scanf("%d",&n);//输入带排序的数字个数
for(i=1;i<=n;i++)//记录每个数字出现的次数
{
scanf("%d",&t);
book[t]++;
}
for(i=1000;i>=0;i--)//待排序的数字个数
for(j=1;j<=book[i];j++)//每个数字出现的次数是多少就输出多少个数字。
printf("%d",i);
return 0;
}