【问题标题】:Space overhead of in-place Radix sort就地基数排序的空间开销
【发布时间】:2025-12-13 04:45:01
【问题描述】:

当递归实现时,就地基数排序的空间开销是多少。我在这里实现了就地基数排序,没有递归:

http://41j.com/blog/2015/03/in-place-radix-sort-ok-space-overhead/

我相信我实现它的方式 O(r^k) 将需要额外的空间。其中 r 是基数,k 是位数。我是否认为递归解决方案只需要 O(k) 额外空间?

【问题讨论】:

  • 你的代码有很多问题。引用一个微妙的例子:如果int 是 32 位且 bit31if ((v & (1 << bit)) > 0) 将失败。如果v 为负数,则表达式将为非零但不是正数。这不是不支持负数的唯一原因,您对高位的假设也是错误的。

标签: algorithm sorting recursion radix-sort


【解决方案1】:

假设每个递归步骤按另一个位排序,最大递归深度等于排序键的位长度。因此,如果您的排序键长度为 k=32 位,则您需要进行 32 级递归,并且每个级别的内存使用量都是恒定的。

是的,递归堆栈需要 O(k) 额外空间。

【讨论】: