8得票4回答
如何编写归并排序?

我正在尝试实现归并排序,但运行代码时出现了 stack level too deep (SystemStackError) 错误。我不确定问题可能是什么。 def merge_sort(lists) lists if lists.count == 1 middle = lists...

7得票3回答
使用时间复杂度为O(n + k*log(k))的算法对整数进行排序

设计一种算法,对包含重复元素的n个整数进行排序,其中不同数字的总数为k。你的算法应该在O(n + k*log(k))的时间复杂度内运行。期望的运行时间足够快。对于哪些值的k,这个算法变成线性? 我无法想出一个符合条件必须是O(n + k*log(k))的整数排序算法。我不是一个很高级的程序员...

11得票4回答
非递归的归并排序有两个嵌套循环 - 如何实现?

这是一个作业问题,需要在数组上执行归并排序,但是需要以一种我不确定如何做的方式。通常情况下,我们会有一个单独的合并和归并排序函数,并使用两个函数来完成任务。但是,听起来他希望将所有内容放在一个方法中?我希望有人能够帮助我澄清事情,或者用我更容易理解的术语来表达。 从作业要求来看: 您...

21得票15回答
快速排序比归并排序慢吗?

昨天我在实现快速排序算法,然后我运行它,期望它比归并排序(我也实现了)有更快的运行时间。我运行了这两种算法,虽然快速排序在小数据集<100个元素时更快(我确保它是可行的),但归并排序很快就成为了更快的算法。我被教导快速排序几乎总是比归并排序“更快”,我知道这个话题存在一些争议,但我至少预...

15得票1回答
对于输入大小为n,哪些n值下插入排序会胜过归并排序?

在《算法导论》(Corman)一书中,练习1.2-2提出了关于比较插入排序和归并排序实现的问题。对于输入大小为n,插入排序运行了8n^2次步骤,而归并排序运行了64n lg n次步骤; 对于哪些n值,插入排序能够击败归并排序? 虽然我对答案很感兴趣,但我更想知道如何逐步找到答案(以便我可以重...

37得票6回答
何时使用归并排序而不是快速排序?

在许多情况下,快速排序比归并排序更好。但是,在什么情况下归并排序可能比快速排序更好呢? 例如,当所有数据无法一次性加载到内存中时,归并排序的效果更好。还有其他情况吗? 建议重复问题的答案列出了使用快速排序优于归并排序的优点。我正在询问可能的情况和应用程序,其中归并排序比快速排序更好。

11得票1回答
为什么 QuackSort 对于随机列表比 Data.List 的 sort 快 2 倍?

我正在寻找Haskell中 MergeSort 的官方实现,以便将其移植到HOVM。我在 StackOverflow答案 中找到了实现方法。 在移植算法时,我发现有些奇怪:该算法具有“halve”函数,仅将列表分成两个部分并使用一半长度进行递归和合并。 因此,我想:为什么不更好地利用这个过程,...

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

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

26得票9回答
多线程快速排序或归并排序

如何在Java中实现并发的快速排序或归并排序算法?我们在一台拥有16个(虚拟)内核的Mac上遇到了问题,使用默认的Java排序算法只有一个内核在工作!看到这部非常好的机器完全未被充分利用真是令人不爽。所以我们自己写了一个(我写的),确实获得了很好的加速效果(我编写了一个多线程快速排序,由于其分...

16得票3回答
关于数组中的原地合并

我看到了以下问题。 给定一个包含n个元素和一个整数k,其中k<n。已经排好序的元素{a0...ak}和 {ak+1...an}。请提供一种时间复杂度为O(n),空间复杂度为O(1)的算法进行排序。 在我看来,似乎无法以O(n)时间复杂度和O(1)空间复杂度完成此任务。实际上,这个问题...