(1)算法简介
桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排
(2)算法描述和实现
具体算法描述如下:
- <1>.设置一个定量的数组当作空桶;1>
- <2>.遍历输入数据,并且把数据一个一个放到对应的桶里去;2>
- <3>.对每个不是空的桶进行排序;3>
- <4>.从不是空的桶里把排好序的数据拼接起来。4>
Javascript代码实现:
|
|
php代码实现:
|
|
(3)算法分析
桶排序最好情况下使用线性时间O(n),桶排序的时间复杂度,取决与对各个桶之间数据进行排序的时间复杂度,因为其它部分的时间复杂度都为O(n)。很显然,桶划分的越小,各个桶之间的数据越少,排序所用的时间也会越少。但相应的空间消耗就会增大。
最佳情况:T(n) = O(n+k)
最差情况:T(n) = O(n+k)
平均情况:T(n) = O(n2)