19得票6回答
快速排序和尾递归优化

在算法导论的第p169页中,讨论了使用尾递归实现Quicksort的方法。 本章早期介绍的原始Quicksort算法(伪代码如下): Quicksort(A, p, r) { if (p < r) { q: <- Partition(A, p, r) Quickso...

19得票2回答
Python 快速排序运行错误:递归深度超过了 cmp 的最大值。

我正在编写一个程序,将会读取一个包含5,163个名字的文本文件(可以在这里看到该文本文件)。 然后我想把这些名字存储到一个名为“names”的列表中,之后,我将根据名字包含的字母数量对列表进行排序,较短的名字位于列表的开头,较长的名字位于列表的末尾。 我使用快速排序算法对列表进行排序,但运...

19得票2回答
了解快速排序

我很难理解快速排序算法,因为大部分的演示和讲解都没有说明实际发生了什么(例如:http://me.dt.in.th/page/Quicksort/)。维基百科如下所述: 从数组中选择一个元素作为基准点(pivot),重新排列数组,使得所有比基准点小的元素都排在基准点前面,而其他元素排在...

18得票7回答
快速排序和霍尔分区

我很难将使用Hoare分区的QuickSort翻译成C代码,并且无法找到原因。我正在使用的代码如下所示:void QuickSort(int a[],int start,int end) { int q=HoarePartition(a,start,end); if (end&...

18得票6回答
快速排序算法是否存在安全风险?

我在某些情况下产生了严重的疑虑和偏执,想知道使用快速排序算法是否会成为应用程序中的安全风险。 它的基本实现以及改进版本(如3-中值快排)具有行为异常的特点,这意味着它们对于某些输入数据的运行时间可能会极大地增加(具有O(n^2)的复杂度),更不用说可能出现堆栈溢出的情况。 因此,如果向一个...

18得票2回答
这是一个问题标题: 快速排序算法是否是原地排序?

快速排序通常被描述为一种就地(in-place)算法,尽管它需要O(log n)的堆栈空间。那么,就地是指“需要少于O(n)的额外空间”,还是堆栈空间通常不计入空间复杂度(但为什么会这样呢?),或者说快速排序实际上不是一种就地算法?

18得票6回答
快速排序的最坏情况是什么?

快速排序算法什么时候需要 O(n^2) 的时间复杂度?

16得票2回答
为什么Boost的快速排序比Julia的快速排序慢?

我正在比较Julia和C++的性能。然后我发现,在Julia中,快速排序比C++更快,尤其是当数组大小非常大时。 有人可以解释原因吗? quickSort.jlinclude("../dimension.jl") function execute() n = g...

15得票1回答
C#中方法内联的成本

我最近在C#中实现了一个快速排序算法。对于包含数百万项的整数数组进行排序,该代码的性能大约比.NET的实现慢了10%。 private static void QS(int[] arr, int left, int right) { if (left >= right) ret...

15得票3回答
为什么将调用放在单独的方法中,Parallel.Invoke会更快?

我实现了快速排序算法三次,并测量了对5000万个随机数进行排序所需的时间: 1. 顺序排序(大约需要14秒) 2. 在相同方法中使用Parallel.Invoke()(大约需要12秒) 3. 在单独的方法中使用Parallel.Invoke()(大约需要7秒) 因此,我的问题是:为什么如果...