桶排序

概述

桶排序(Bucket Sort) 是一种非比较排序算法,假设输入服从均匀分布,将元素分配到若干个桶中,对每个桶分别排序后依次合并。期望时间复杂度为 ,最坏情况为

定义

桶排序

桶排序假设输入数组 中的元素均匀分布在区间 上。

算法步骤

  1. 创建 个空桶
  2. 放入桶 中。
  3. 对每个非空桶单独排序(通常使用插入排序)。
  4. 按桶的顺序依次连接各桶中的元素。

期望时间复杂度(均匀分布假设下) 最坏时间复杂度(所有元素落入同一个桶时)

核心性质

均匀分布假设

桶排序的高效性依赖于输入在 上均匀分布的假设。在此假设下:

  • 每个桶中期望包含 个元素。
  • 对每个桶排序的期望时间为 (使用插入排序)。
  • 个桶的总期望时间为

期望运行时间的分析

为落入桶 的元素个数,。桶排序的总运行时间为:

在均匀分布下,可以证明 ,因此期望时间为

稳定性

桶排序可以是稳定的,取决于桶内使用的排序算法是否稳定。

适用场景

  • 输入数据在已知范围内均匀分布。
  • 适用于浮点数排序(尤其是 区间内的数)。
  • 可以推广到任意范围 ,通过线性映射将元素映射到

章节扩展

第8章:线性时间排序

桶排序是第8章讨论的三种非比较排序算法之一,展示了在概率假设下突破比较排序下界的方法。

参见