66得票4回答
LINQ的“OrderBy”使用哪种排序算法?

显然,LINQ的"OrderBy"最初被指定为不稳定的,但在Orca发布时被指定为稳定的。并非所有文档都已相应更新,请参考以下链接: Jon Skeet关于OrderBy的稳定性 Troy Magennis关于OrderBy稳定性 但是,如果LINQ的OrderBy现在是“稳定的”,那...

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

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

60得票3回答
为什么在对链表进行排序时,归并排序比快速排序更受青睐

我在论坛上读到以下内容: 归并排序对于像链表这样的不可变数据结构非常有效 而且 当数据存储在内存中时,快速排序通常比归并排序更快。然而,当数据集很大并且存储在外部设备(如硬盘)上时,归并排序在速度方面是明显的赢家。它最小化了昂贵的外部驱动器读取次数 以及 在操作...

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

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

56得票6回答
为什么快速排序使用 O(log(n)) 的额外空间?

我已经实现了下面的快速排序算法。我在网上看到说它需要 O(log(n)) 的空间。为什么会这样呢?我没有创建任何额外的数据结构。 这是因为我的递归调用会在栈上使用一些额外的空间吗?如果是这种情况,那么通过不使用递归(而是使其变成迭代)来减少内存使用是可能的吗?private static v...

53得票6回答
快速排序相对于堆排序的优越性

堆排序的最坏时间复杂度是O(nlogn),而快速排序的时间复杂度为O(n^2)。 但实际证据表明,快速排序更优秀。为什么呢?

44得票7回答
Python比编译的Haskell更快吗?

我有一个简单的脚本,用Python和Haskell编写。它读取一个包含一百万个换行分隔整数的文件,将该文件解析为整数列表,快速排序并将其写入到另一个已排序文件中。这个文件与未排序文件具有相同的格式。很简单。 以下是Haskell代码:quicksort :: Ord a => [a] ...

42得票7回答
快速排序算法中的三向划分

什么是具有三路划分的QuickSort?

42得票6回答
快速排序的最坏情况 - 何时会发生?

在分析QS时,每个人总是提到“几乎有序”的最坏情况。自然输入什么时候会发生这种情况? 我能想到的唯一例子是重新索引。

41得票4回答
快速排序是原地排序算法吗?

因此,Quicksort的空间效率为O(log(n))。这是维护调用栈所需的空间。 现在,根据维基百科上的Quicksort页面,这被认为是一种原地算法,因为算法只是在输入数据结构内部交换元素。 然而,根据这个页面,O(log n)的空间效率使Quicksort不符合原地算法的标准,因为它...