本节我们介绍一下“桶排序”。
1. 桶排序
桶排序(英文: Bucket Sort)是排序算法的一种,适用于待排序数据值域较大但分布比较均匀的情况。
1.1 工作原理
桶排序按下列步骤进行:
1) 设置一个定量的数组当做空桶;
2) 遍历序列,并将元素一个个放到对应的桶中;
3) 对每个不是空的桶进行排序;
4) 从不是空的桶里把元素再放回原来的序列中;
1.2 性质
1) 稳定性
如果使用稳定的内层排序,并且将元素插入桶中时不改变元素间的相对顺序,那么桶排序就是一种稳定的排序算法。由于每块元素不多,一般使用插入排序。此时桶排序是一种稳定的排序算法。
2)时间复杂度
桶排序的平均时间复杂度为O(n+n^2/k+k)
(将值域平均分成n块 + 排序 + 重新合并元素),当k≈n
时为O(n)。
桶排序的最坏时间复杂度为O(n^2)。
1.3 算法实现
[参看]:
-
OI WIKI-排序
-
基数(Radix)排序