桶排序

桶排序(Bucket sort)又称之为箱排序,将数组中的元素分到有限数量的桶里,再对桶内的元素进行排序,最终将非空的桶内的已排序数组合并。

对桶内元素进行排序时,可以采取其它的排序算法。

  • 平均时间复杂度:O(n+k)\mathcal{O}(n + k)

  • 最好时间复杂度:O(n+k)\mathcal{O}(n + k)

  • 最坏时间复杂度:O(n2)\mathcal{O}(n^2)

  • 空间复杂度:O(nk)\mathcal{O}(n * k)

  • 稳定性:对桶内元素采取的排序算法导致稳定性无法确定

  • 排序方式:非原地(not-in-place)

步骤:

  1. 设置一个定量的数组当作空桶

  2. 遍历序列,将元素放入对应的桶里

  3. 对每个不是空的桶进行排序

  4. 从非空的桶里将元素放回原来的序列中。

JavaScript 实现:

最后更新于