桶排序
概述
桶排序(Bucket Sort) 是一种非比较排序算法,假设输入服从均匀分布,将元素分配到若干个桶中,对每个桶分别排序后依次合并。期望时间复杂度为 ,最坏情况为 。
定义
桶排序
桶排序假设输入数组 中的元素均匀分布在区间 上。
算法步骤:
- 创建 个空桶 。
- 将 放入桶 中。
- 对每个非空桶单独排序(通常使用插入排序)。
- 按桶的顺序依次连接各桶中的元素。
期望时间复杂度:(均匀分布假设下) 最坏时间复杂度:(所有元素落入同一个桶时)
核心性质
均匀分布假设
桶排序的高效性依赖于输入在 上均匀分布的假设。在此假设下:
- 每个桶中期望包含 个元素。
- 对每个桶排序的期望时间为 (使用插入排序)。
- 个桶的总期望时间为 。
期望运行时间的分析
设 为落入桶 的元素个数,。桶排序的总运行时间为:
在均匀分布下,可以证明 ,因此期望时间为 。
稳定性
桶排序可以是稳定的,取决于桶内使用的排序算法是否稳定。
适用场景
- 输入数据在已知范围内均匀分布。
- 适用于浮点数排序(尤其是 区间内的数)。
- 可以推广到任意范围 ,通过线性映射将元素映射到 。
章节扩展
第8章:线性时间排序
桶排序是第8章讨论的三种非比较排序算法之一,展示了在概率假设下突破比较排序下界的方法。