【发布时间】:2018-06-18 17:12:41
【问题描述】:
我遇到了一种称为美国排序的排序算法。我读到它是基数排序的变体。谁能详细说明一下这个排序算法以及与之相关的时间和空间复杂度。
【问题讨论】:
标签: algorithm sorting data-structures time-complexity space-complexity
我遇到了一种称为美国排序的排序算法。我读到它是基数排序的变体。谁能详细说明一下这个排序算法以及与之相关的时间和空间复杂度。
【问题讨论】:
标签: algorithm sorting data-structures time-complexity space-complexity
您指的是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。
【讨论】: