一、什么是桶排序
桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。
对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要
二、实现方式
- 设置一个定量的数组当作空桶子。
- 寻访序列,并且把项目一个一个放到对应的桶子去。
- 对每个不是空的桶子进行排序。
- 从不是空的桶子里把项目再放回原来的序列中。
三、实现实例
伪代码:
function bucket-sort(array, n) is
buckets ← new array of n empty lists
for i = 0 to (length(array)-1) do
insert array[i] into buckets[msbits(array[i], k)]
for i = 0 to n - 1 do
next-sort(buckets[i])
return the concatenation of buckets[0], ..., buckets[n-1]
元素分布在桶中:
元素分布在桶中:
*来自wiki https://zh.wikipedia.org/wiki/桶排序
四、关于桶排序的性能参数
1、时间复杂度
最坏时间复杂度: O ( n 2 ) O(n^2) O(n2)
平均时间复杂度: O ( n + k ) O(n + k) O(n+k)
最好时间复杂度: O ( n + k ) O(n + k) O(n+k)