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

对列表中的项目进行排序是一项很平常的任务,而且常常很耗时。术语排序通常是指根据预先指定的排序关系,以升序或降序排列列表中的项目。排序通常用于搜索,这是数据处理中的另一项基本活动。想象一下,如果字典里的单词没有被组织或分类,那么在字典里搜索单词是多么困难。这就是为什么字典里的词条是按标准的字母顺序排列的。通过排序,许多任务和计算变得毫不费力。这就是排序算法的用武之地。...

对列表中的项目进行排序是一项很平常的任务,而且常常很耗时。术语排序通常是指根据预先指定的排序关系,以升序或降序排列列表中的项目。排序通常用于搜索,这是数据处理中的另一项基本活动。想象一下,如果字典里的单词没有被组织或分类,那么在字典里搜索单词是多么困难。这就是为什么字典里的词条是按标准的字母顺序排列的。通过排序,许多任务和计算变得毫不费力。这就是排序算法的用武之地。

排序算法只不过是一种将列表中的元素按特定顺序组织的方法,例如从最小值到最大值、从最大值到最小值、递增顺序、递减顺序、字母顺序等。最常用的顺序是数字顺序和字典顺序。算法通常使用排序作为关键子例程。有各种各样的排序算法贯穿始终,每一种都采用了一套丰富的技术。一种流行但同样强大的算法是分治算法,它是一种基于多分支递归的算法。快速排序和合并排序是基于分治算法的两种常用算法。

 

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

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

快速排序是一种基于分而治之方法的高效排序算法,类似于将问题分解为两个子问题或多个子问题,然后递归求解的动态排序方法。如果子问题的大小足够小,那么它们就可以简单地以直接的方式解决,而不需要任何麻烦。快速排序算法也称为分区交换排序,它将要排序的列表分为三个主要部分:1)枢轴元素(中心元素),2)小于枢轴的元素,3)大于枢轴的元素。枢轴本身在两个组之间移动到最终位置,然后递归地应用快速排序。

 

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

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

合并排序是另一种基于分治技术的通用排序算法。它是最受尊敬和流行的排序算法之一,设计用于高效地对外部存储在文件中的数据进行排序。在使用O(n)额外存储的最坏情况下,它提供O(n logn)行为。它将集合“a”划分为两个较小的集合,然后对每个集合进行排序。在最后阶段,这两个已排序的集合将合并回大小为n的单个集合。这将是排序列表。该算法是相当快,也是一个稳定的排序,是理想的首选链表。

 

快速排序和合并排序的区别

基础知识

–快速排序和合并排序都是基于分而治之的排序算法,其基本原理相同–将一个问题分成两个或多个子问题,然后递归求解。然而,它们在合并程序和性能方面有所不同。对于小数据集,快速排序通常比其他排序算法(包括合并排序)更好更快,而合并排序保持一致性,而不管数据集的类型如何。快速排序是理想的首选数组,而合并排序是理想的首选链表。

空间复杂性

–快速排序算法中的排序是递归进行的,每个递归调用都需要堆栈位置。它不需要额外的空间来进行合并,只需要一个内存空间来进行合并。由于它是就地排序算法,因此不需要额外的空间来执行排序。实际上,它在分割和合并数组时使用相同的数组。另一方面,在Merge-Sort中,有几种方法可以将数据表示为文件或数组,因此它需要像子文件或相同大小的数组这样的工作区,这些工作区需要额外的空间。

最坏情况复杂性

–快速排序的最坏情况发生在分区不平衡时,这取决于用于分区的元素,在这种情况下,算法与**排序一样缓慢地渐进运行。快速排序的最坏情况是O(n2),并留作练习。但是,可以通过选择正确的轴来避免这种情况。另一方面,合并排序的最坏情况发生在它必须进行最大数量的比较时。考虑到合并的线性性能,合并排序的最坏情况是O(nlog2n)。

演出

–尽管快速排序和合并排序算法都是基于分而治之的排序方法,但它们在执行拆分和合并过程的方法上有所不同。对于快速排序,大部分工作是将列表划分为两个子列表,这在子列表排序之前发生。对于合并排序,大部分工作是在对子列表进行排序之后合并两个子列表。合并排序需要一个临时数组来合并两个子数组,而快速排序不需要额外的数组空间,因此比Marge排序更节省空间。

快速排序与合并排序:比较图

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

 

总结 - 快速排序(of quick sort) vs. 合并排序(merge sort)

快速排序和合并排序算法都是基于分而治之的排序方法。但是,它们在执行拆分和合并过程时使用的方法不同。它们的工作原理基本相同——将一个问题分成两个或多个子问题,然后递归求解。在最坏的情况下,合并排序比快速排序更有效,但在平均情况下,两者的效率相同。但是快速排序比合并排序更节省空间。因此,快速排序无疑比合并排序更快更好,但在一些情况下(例如在比较时),它会变得效率低下。

  • 发表于 2021-06-25 22:32
  • 阅读 ( 442 )
  • 分类:IT

你可能感兴趣的文章

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

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

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

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

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

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

如何在linux上使用uniq命令

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 发布于 2021-07-01 17:05
  • 阅读 ( 292 )
gang38916
gang38916

0 篇文章

相关推荐