1.在所有的排序当中,桶排序可以说是最简单的一种排序了。不过简单归简单,桶排序还是比较浪费空间的,比如有2100000000个数字,就需要申请那么多个变量。
2.关于桶排序的思路,我们不妨用一个比较轻松的比喻来解释这个简单的排序算法。
我们现在有一大串数字等着我们去排序,要么从大到小,要么从小到大,如果数字的数目很庞大的时候我们很容易弄乱,所以我们可以借助外界的工具来帮助我们完成排序的操作。这时我们找来了N个桶(假如有n个数字,切N>=n),并且将桶一一编号,当我们在遍历这n个数字的时候,发现某个数字可以对应上桶上面的标号的时候,就将这个数字放到这个桶里面,以此类推直到遍历完所有的数字。最后只需要数一下每个桶里面有多少个相同的数字就可以了。
3.实际演练
在0~1000的区间里任意输入n个数字,然后将这n个数字进行升序输出。
#include<stdio.h>
int main()
{
int book[1001],t,n; //book[10001]充当桶,计算每个数字的数量
for(int i=0;i<=1000;i++)
{
book[i]=0; //初始化为0
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&t);
book[t]++;
}
for(int i=0;i<=1000;i++) //这时候遍历到某一个数字
{
for(int j=0;j<=book[i];j++) //在这里遍历到这个数字的数量
{
printf("%d ",i);
}
}
getchar();
return 0;
}