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