快速排序(quick sort)和合并排序(merge sort)的区别

合并排序是一种高效、通用、基于比较的排序算法。合并排序是一种分而治之的算法,由约翰·冯·诺依曼于1945年发明。大多数实现都会产生稳定的排序,这意味着如果两个元素具有相同的值,那么它们在输出中的相对位置与在输入中的相对位置相同。换句话说,具有相等值的元素的相对顺序保留在排序输出中。...

什么是合并排序(merge sort)?

合并排序是一种高效、通用、基于比较的排序算法。合并排序是一种分而治之的算法,由约翰·冯·诺依曼于1945年发明。大多数实现都会产生稳定的排序,这意味着如果两个元素具有相同的值,那么它们在输出中的相对位置与在输入中的相对位置相同。换句话说,具有相等值的元素的相对顺序保留在排序输出中。

合并排序重复地将列表分解为多个发布者,直到每个子列表由单个元素组成,并以一种导致排序列表的方式合并这些发布者。合并排序是一种比较排序,也就是说,它可以对定义了小于关系的任何输入进行排序。

运行时间是考虑选择排序算法的一个重要因素,因为效率通常考虑到速度。合并排序在保证的O(nlog n)时间内运行,这明显快于其他几种排序算法的平均和最坏情况运行时间。

007Ys3FFgy1gwttx5pnivj30kn0bhdh2

关于合并排序,您需要了解什么

  • 在合并排序中,数组被分成两半(n/2)。
  • 快速排序的最坏情况复杂性为O(n2),因为在最坏情况下需要进行大量比较。
  • 合并排序可以很好地处理任何类型的数据集,而不管其大小(无论大小)。
  • 合并排序是一种外部排序方法,其中要排序的数据不能同时存储在内存中,有些数据必须保存在辅助内存中。
  • 在数组大小或数据集较大的情况下,合并排序比快速排序效率更高,工作速度更快。
  • 对于链接列表,首选合并排序。
  • 合并排序不到位,因为它需要额外的内存空间来存储辅助数组。
  • 合并排序不显示良好的缓存局部性,这使得合并排序比快速排序慢。
  • 合并排序是稳定的,因为两个值相等的元素在已排序的输出中以与在未排序的输入数组中相同的顺序出现。

什么是快速排序(quick sort)?

快速排序(也称为分区交换排序)是一种高效的排序算法。由英国计算机科学家托尼·霍尔(Tony Hoare)于1959年开发并于1961年出版,它仍然是一种常用的排序算法。如果实施得当,它的速度可能是其主要竞争对手merge sort和heapsort的两到三倍。

快速排序是一种分而治之的算法。它通过从数组中选择一个“pivot”元素并根据其他元素是否小于或大于pivot将其划分为两个子数组来工作。然后对子数组进行递归排序。这可以就地完成,需要少量额外的内存来执行排序。

快速排序是一种比较排序,这意味着它可以对定义了“小于”关系(正式称为“总订单”)的任何类型的项目进行排序。快速排序的高效实现不是稳定排序,这意味着相等排序项的相对顺序不会保留。

对快速排序的数学分析表明,平均而言,该算法对n个项目进行排序需要O(n logn)比较。在最坏的情况下,它进行so(n2)比较,尽管这种行为很少见。

007Ys3FFgy1gwttx6gpeuj30es0g0q3p

关于快速排序,您需要了解什么

  • 在快速排序中,数组被分成任意比例。没有将元素数组分成相等部分的强制。
  • 合并排序的最坏情况复杂性是O(n logn)。
  • 快速排序不能很好地处理大型数据集。
  • 快速排序是一种内部排序方法,其中要排序的数据在主内存中一次调整一次。
  • 在数组大小或数据集较小的情况下,快速排序比合并排序效率更高,工作速度更快。
  • 对于阵列,首选快速排序。
  • 快速排序不需要任何额外存储。
  • 快速排序具有良好的缓存局部性,这使得快速排序在许多情况下(如在虚拟内存环境中)比合并排序更快。
  • 快速排序不稳定;但是,通过在代码中实现一些更改,可以使其保持稳定。

Also Read: Difference Between Array And Pointer

快速排序(quick sort)和以表格形式合并排序(merge sort in tabular form)的区别

比较基础 合并排序 快速排序
描述 在合并排序中,数组被分成两半(n/2)。 在快速排序中,数组被分成任意比例。没有将元素数组分成相等部分的强制。
最坏情况复杂性 快速排序的最坏情况复杂性为O(n2),因为在最坏情况下需要进行大量比较。 合并排序的最坏情况复杂性是O(n logn)。
工作 合并排序可以很好地处理任何类型的数据集,而不管其大小(无论大小)。 快速排序不能很好地处理大型数据集。
分类 合并排序是一种外部排序方法,其中要排序的数据不能同时存储在内存中,有些数据必须保存在辅助内存中。 快速排序是一种内部排序方法,其中要排序的数据在主内存中一次调整一次。
效率 在数组大小或数据集较大的情况下,合并排序比快速排序效率更高,工作速度更快。 在数组大小或数据集较小的情况下,快速排序比合并排序效率更高,工作速度更快。
使用 对于链接列表,首选合并排序。 对于阵列,首选快速排序。
附加存储 合并排序不到位,因为它需要额外的内存空间来存储辅助数组。 快速排序不需要任何额外存储。
速度 合并排序不显示良好的缓存局部性,这使得合并排序比快速排序慢。 快速排序具有良好的缓存局部性,这使得快速排序在许多情况下(如在虚拟内存环境中)比合并排序更快。
稳定性 合并排序是稳定的,因为两个值相等的元素在已排序的输出中以与在未排序的输入数组中相同的顺序出现。 快速排序不稳定;但是,通过在代码中实现一些更改,可以使其保持稳定。

  • 发表于 2021-11-27 17:19
  • 阅读 ( 185 )
  • 分类:IT

你可能感兴趣的文章

插入排序(insertion sort)和选择排序(selection sort)的区别

关键区别-**排序与选择排序 **排序和选择排序是两种排序算法,用于对一组数据进行排序。有时有必要按特定顺序排列数据。排序算法是对一组数据进行排序的机制。在排序中,数据是按照数字或字典顺序排列的。如果数据...

  • 发布于 2020-10-19 12:45
  • 阅读 ( 617 )

如何按评论数对亚马逊搜索结果排序

... Amazon Sort for Chrome帮助您按评论数对搜索结果进行排序。简单但有效! ...

  • 发布于 2021-03-16 07:54
  • 阅读 ( 368 )

如何在linux上使用uniq命令

linuxuniq命令在文本文件中快速查找唯一或重复的行。在本指南中,我们将介绍它的多功能性和特性,以及如何充分利用这个漂亮的实用程序。 在linux上查找匹配的文本行 uniq命令是快速、灵活的,而且非常擅长它所做的事情。...

  • 发布于 2021-04-02 16:25
  • 阅读 ( 204 )

如何在excel中按字母顺序排列工作表页签

...大量工作表,则可能很难找到特定的工作表。按字母顺序排序工作表选项卡将更容易找到您要查找的内容。 相关:如何在Excel中重命名工作表选项卡 除了通过对工作表应用颜色来组织工作表选项卡外,只要您已将自定义名称应...

  • 发布于 2021-04-08 18:07
  • 阅读 ( 364 )

amazon sort for chrome为amazon结果添加了一个“评论数”排序方法

...是最有意义的,这意味着根据普通顾客的评价对结果进行排序。不幸的是,这并不总是有帮助的,因为它包含的产品只有几个评论。amaz***ort是一个Chrome扩展,它可以帮助您进行排序。amaz***ort只是增加了一个新的排序方法,“评...

  • 发布于 2021-05-16 09:40
  • 阅读 ( 158 )

银行代码(swift code)和排序代码(sort code)的区别

...主要手段。因此,如果您在另一个国家,您甚至不能使用排序代码将资金转移到英格兰或爱尔兰,因为这将缺少识别该国家的正确代码。 很容易确定您的代码是swift代码还是排序代码,因为它们在长度和组成方面有很大的不同。...

  • 发布于 2021-06-23 19:49
  • 阅读 ( 503 )

分类(sort)和寻求(sought)的区别

主要差异排序(main difference sort) vs. 寻求(sought) Sort和seeded是另一对同音词,对英语学习者来说是一个巨大的挑战。虽然这些词听起来很像,但它们的意思完全不同。seek是seek的过去分词,而sort在意义上等同于type或category等词。这...

  • 发布于 2021-06-27 18:36
  • 阅读 ( 193 )

气泡排序(bubble sort)和选择排序(selection sort)的区别

...的开头。 排序是按排列顺序排列数据的方法。它有助于快速搜索数据元素。排序算法在机器学习和大数据分析等多个领域都很有用,可以用来处理大数据集。有各种排序算法。气泡排序和选择排序是其中的两种。 覆盖的关键领...

  • 发布于 2021-07-01 07:25
  • 阅读 ( 586 )

快速排序(quicksort)和合并排序(merge sort)的区别

快速排序和合并排序之间的主要区别在于,快速排序通过将每个元素与称为枢轴的元素进行比较来对元素进行排序,而合并排序则将数组一次又一次地划分为两个子数组,直到只剩下一个元素。 排序是按特定顺序排列数据的方...

  • 发布于 2021-07-01 07:27
  • 阅读 ( 333 )

可比(comparable)和java中的比较器(comparator in java)的区别

...较器的主要区别在于,可比较的基于单个元素对集合进行排序,而比较器基于多个元素对集合进行排序。 Java是一种高级的通用编程语言,有助于构建各种应用程序,如web、桌面、移动和高性能分布式系统。此外,Java的一个主要...

  • 发布于 2021-07-01 17:05
  • 阅读 ( 309 )
魔法仙女小畜生
魔法仙女小畜生

0 篇文章

相关推荐