美国排序和基数排序有什么区别?

时间:2018-06-18 07:59:47

标签: algorithm sorting data-structures time-complexity space-complexity

我遇到了这种名为美国排序的排序算法。我读到它是基数排序的变种。有人可以详细说明这种排序算法以及与之相关的时间和空间复杂性。

1 个答案:

答案 0 :(得分:2)

您指的是American flag sort,一种高效的就地基数排序变体,可将项目分配到数百个存储桶中。它是分发排序:其中项目从输入分发到多个中间结构(在这种情况下为桶),然后收集并放置在输出上。

基数排序:时间:O(nk),空格:O(n + k),n是键数,k是最大数量数字(值)可以有的数字。

美国国旗排序:时间:O(n * k / d),空格:O(k),n是位数,k是平均桶尺寸。

american flag sort optimization中阅读更多内容。

阅读Engineering Radix Sort (1993),在两篇算法之间的论文实验比较中。

美国国旗排序的Java implementation