C语言: 桶排序
标签: C语言 桶排序
by 小威威
1.桶排序的介绍
通俗地来说,桶排序就是将数组内的元素按照一定规则分配到一定数量的桶中,然后将各个桶内的数字进行分别排序,最后再将它们串起来。倘若我们要对很多数据进行冒泡排序,这种分桶的方式就大大提高了冒泡排序的执行效率。因为在处理较少的数据时,冒泡排序的执行效率并不亚于其他排序,甚至不亚于快排。然而,我今天要讲的桶排序是另一种类型。
2.桶排序的思想
我的桶排序,是比较耗内存的,但是代码十分简单,如果对内存没有那么严格的要求的话,优先采用我的方法。
我的思路是:一个桶代表一个数字,数组内数字应分配到与桶编码相等的桶中去。(不难想到要先求出数组的最大值,因为数组的最大值是决定桶数量的重要依据)。每个桶都有一个编号,编号从0开始。然后每个桶内装的是数组内等于该编号的元素的个数,初始值为0。接下来对数组内的数字进行检测,检测到该数字,对应编码的桶就+1。当检测完毕时,各个桶就完成了对数组内数字的统计。接下来,我们可以按照桶的编号从0开始一次输出桶的编号,根据桶内数字决定这个桶输出编号的次数。如此,输出的数据必是从小到大。
以下是实现桶排序的函数:
int Max(int *pArr,