212得票15回答
原地基数排序

这是一段很长的文本,请耐心阅读。简而言之,问题是:是否有可行的原地基数排序算法? 初步 我有很多只使用字母“A”、“C”、“G”和“T”(是的,你猜对了:DNA)的小固定长度字符串需要排序。 目前,我使用std::sort,它在所有常见的STL实现中使用introsort。这个方法效...

65得票6回答
为什么快速排序比基数排序更受欢迎?

为什么快速排序(或introsort)或者任何基于比较的排序算法比基数排序更为常见呢?尤其是对于数字的排序。 基数排序不是基于比较的,因此可能比O(nlogn)更快。实际上,它的时间复杂度是O(kn),其中k是用于表示每个项目的位数。而且内存开销并不重要,因为您可以选择要使用的桶的数量,并且...

65得票7回答
基数排序、计数排序和桶排序。它们有什么区别?

我正在阅读基数排序、计数排序和桶排序的定义,似乎它们都只是下面的代码:public static void sort(int[] a, int maxVal){ int [] bucket=new int[maxVal+1]; for (int i=0; i<bucke...

56得票12回答
何时应该使用基数排序?

看起来基数排序的平均情况下性能非常好,即O(kN): http://en.wikipedia.org/wiki/Radix_sort 然而似乎大多数人仍在使用快速排序-为什么?

54得票2回答
桶排序和基数排序有什么区别?

桶排序和基数排序是密切相关的算法;桶排序从高位到低位排序,而基数排序可以在"LSD"或者"MSD"方向进行排序。这两个算法是如何工作的,特别是它们有什么区别?

40得票4回答
基数排序是如何工作的?

我不知道为什么这对我来说很难理解。我查阅过维基页面、伪代码(以及实际代码),试图理解基数排序算法如何工作(与桶有关)。我是在看错了吗?也许应该看看桶排序?有人能给我一个更简化的工作原理吗?供参考,这里是一个据说执行基数排序的代码块:// Sort 'size' number of intege...

25得票11回答
负整数的基数排序

我正在尝试实现整数的基数排序,其中包括负整数。对于非负整数,我计划创建一个由10个队列组成的队列,分别对应数字0-9,并实现LSD算法。但是我对负整数有点困惑。现在我考虑的是,继续为它们创建另一个由10个队列组成的队列,并单独对它们进行排序,最后我会得到两个列表,一个包含已排序的负整数,另一个...

24得票3回答
基数排序:LSD与MSD版本

"算法导论"一书提到了基数排序的LSD(最低有效位)版本。然而,在stackoverflow上,其他人已经指出了MSD(最高有效位)版本的存在。因此,我想了解每个版本的优缺点。我猜LSD版本比MSD版本有一些优势,但我不确定。因此提出这个问题。

16得票2回答
基数排序,对浮点数进行排序

基数排序能够对浮点数进行排序,例如0.5、0.9、1.02等。

14得票3回答
为什么基数排序的空间复杂度为O(k + n)?

考虑一个由n个数字组成的数组,最大有k位数(参见Edit)。考虑来自这里的基数排序程序:def radixsort( aList ): RADIX = 10 maxLength = False tmp, placement = -1, 1 while not maxLengt...