algorithm - 美式排序和基数排序有什么区别?

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

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

最佳答案

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


基数排序:时间:O(nk),空间:O(n+k),n为key个数,k 是数字(值)可以具有的最大位数。

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


阅读更多 american flag sort optimization .

阅读Engineering Radix Sort (1993) ,论文中对两种算法进行了实验比较。

Java implementation美国国旗分类。

关于algorithm - 美式排序和基数排序有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50905010/

相关文章:

返回二叉树中最短分支长度的算法

algorithm - 考虑递归算法中的比较次数

python - 在 python 中实现树结构的最佳方法是什么

c - C 有哪些高质量的图形库?

java - 如何在一个循环中重新组合这些 if 条件?

algorithm - 这些循环 1 和 2 的时间复杂度是多少

查找重复项的算法

java - JSP 显示标签排序页面重新加载

c# - WPF 数据网格 : sort a column programatically the MVVM way?

matlab - 为什么 Matlab 中的元胞数组结构表现不佳并不断构造向量?