【问题标题】:Quicksort vs Mergesort in terms of comparisons比较方面的快速排序和合并排序
【发布时间】:2012-10-27 02:00:53
【问题描述】:

首先,我在发布这个问题之前已经完成了搜索。我在Why is quicksort better than mergesort? 看过这个问题,但它有一些相互矛盾的答案。

根据我的看法,人们说快速排序比合并排序“更快”,因为它的引用位置、缓存命中等。现在,我接受这在实践中很重要,但我的问题纯粹是关于分析 - 我不是对递归开销、缓存问题等感兴趣。此外,当他们说得更快时,答案通常含糊不清,我不确定他们是否指的是执行所花费的时间,因此缓存问题是否与他们的答案相关。

无论如何,我的问题很简单。纯粹就执行的比较次数而言,归并排序总是比快速排序更有效吗?维基百科告诉我是的,这是我一直认为的,但正如我所说,其他人说的不同。

【问题讨论】:

  • 当然,阅读维基页面会回答您的问题?
  • 是的,我已经阅读了维基百科页面,然后我遇到了另一个页面,它告诉我事实正好相反。因此问题。

标签: analysis quicksort mergesort


【解决方案1】:

在最坏的情况下,基本快速排序将在 O(n^2) 时间内运行。考虑如果选择的枢轴总是下一个最小的元素,它相当于插入排序。合并排序没有这个困难。

此外,Mergesort 也是stable,这意味着它保留了等值元素的顺序(因此它有利于“先按此,然后按那个”进行排序),而快速排序则不是。

Mergesort 的最大缺点是大多数实现必须使用 2n 空间来完成,而 Quicksort 可以就地完成(以防应用程序中存在空间问题)。

QuicksortMergesort 上的各个维基百科都很棒,我建议阅读它们。

【讨论】:

  • 我想我的主要问题是不同的消息来源告诉我不同​​的事情。总是去维基百科。谢谢。
猜你喜欢
  • 2021-06-06
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
  • 2021-06-19
  • 2016-12-08
  • 2016-12-23
相关资源
最近更新 更多