资讯专栏INFORMATION COLUMN

Java面试题:稳定和不稳定排序算法之间的区别-MergeSort与QuickSort

wanghui / 3294人阅读

摘要:稳定与不稳定算法示例以下图片解释了稳定和不稳定的排序是如何工作的这就是稳定和不稳定排序算法之间的区别。稳定排序算法的一些常见示例是合并排序,插入排序和冒泡排序。

来源 | 愿码(ChainDesk.CN)内容编辑

愿码Slogan | 连接每个程序员的故事

网站 | http://chaindesk.cn

愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。

官方公众号 | 愿码 | 愿码服务号 | 区块链部落

免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码

本文阅读时长:6min

你是否理解QuickSort与MergeSort之间的区别?你稳定和不稳定的排序算法的含义是什么?

当面试官问到以上问题应如何回答?
如果排序算法保持数字/记录的相对顺序,即如果需要排序1 1 2 3,那么如果不更改前两个排序的顺序,则认为排序算法是稳定的,但如果交换它们,则尽管总体结果或排序顺序保持不变,但它将变得不稳定。

当您对对象进行排序时(例如,按键对键值对进行排序),这种差异会变得更加明显。在稳定算法的情况下,保留键值对的原始顺序,如下例所示。

实际上,如果您忘记提及这些概念,面试官可能会将此问题视为快速排序与合并排序的后续工作。

quicksort和mergesort之间的主要区别之一是快速排序不稳定,而合并排序是一种稳定的排序算法。顺便说一句,如果您不熟悉Quicksort和Mergesort等基本排序算法,那么我建议您学习下全面的数据结构课程,如数据结构和算法:深度使用Java。它将为您提供进一步探索所需的所有基础知识。

稳定与不稳定算法

假设您需要按键的递增顺序对以下键值对进行排序:

INPUT:(4,5)(3,2)(4,3)(5,4)(6,4)

现在,有两个密钥相同的两对的可能解决方案即(4,5)和(4,3)如下所示:

OUTPUT1:(3,2),(4,5),(4,3),(5,4),(6,4)
OUTPUT2:(3,2 ),(4,3),(4,5),(5,4),(6,4)

将产生第一个输出的排序算法称为稳定排序算法,因为保持了相等键的原始顺序,您可以看到(4,5)以排序顺序出现在(4,3)之前,这是原始顺序,即在给定的输入中,(4,5)出现在(4,3)之前。

产生第二输出的算法将被称为不稳定的排序算法,因为具有相同键的对象的顺序不按排序顺序维持。你可以看到,在第二个输出中,(4,3)出现在(4,5)之前,原始输入中不是这种情况。

现在,最大的问题是稳定和不稳定排序算法的一些例子是什么?那么,你可以把所有众所周知的排序算法分成稳定和不稳定的。稳定算法的一些示例是合并排序,插入排序,冒泡排序和二叉树排序。而QuickSort,堆排序和选择排序是不稳定的排序算法。

如果你还记得,Collections.sort()Java Collection框架中的方法使用迭代合并排序,这是一种稳定的算法。如果输入数组被部分排序,它的比较也比NLog(N)少得多。

如果您有兴趣了解有关此主题的更多信息,我建议您学习数据结构和算法,比如算法和数据结构-第1部分和第2部分。它是Java程序员算法的综合课程之一。

稳定与不稳定算法示例

以下图片解释了稳定和不稳定的排序是如何工作的:

这就是稳定和不稳定排序算法之间的区别。请记住,如果在排序的输出中保持相等键或数字的原始顺序,则该算法称为排序算法。稳定排序算法的一些常见示例是合并排序,插入排序和冒泡排序。

你还想要知道哪些关于面试题的知识呢?请在下方留言!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74167.html

相关文章

  • 前端 排序算法总结

    摘要:前言排序算法可能是你学编程第一个学习的算法,还记得冒泡吗当然,排序和查找两类算法是面试的热门选项。本篇将会总结一下,在前端的一些排序算法。函数的性能相信对于排序算法性能来说,时间复杂度是至关重要的一个参考因素。 前言 排序算法可能是你学编程第一个学习的算法,还记得冒泡吗? 当然,排序和查找两类算法是面试的热门选项。如果你是一个会写快排的程序猿,面试官在比较你和一个连快排都不会写的人的时...

    happen 评论0 收藏0
  • 八种常见排序算法细讲

    摘要:目录常见的八种排序常见的八种排序直接插入排序直接插入排序希尔排序希尔排序直接选择排序直接选择排序堆排序堆排序冒泡排序冒泡排序快速排序快速排序版本版本挖坑法挖坑法前后指针版前后指针版快速排序代码 目录 常见的八种排序 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序  快速排序 hoar...

    hiyang 评论0 收藏0
  • 排序算法总结

    摘要:如果对空间限制不大,可以使用基数排序等方法降低时间复杂度,这些线性时间排序法是利用了数据的特性达到最佳的效果。 内部排序 以下为基于比较的排序。 一、插入排序 直接插入排序 基本思想: 将元素插入到已经排好序的序列中。第一个元素已经是有序序列,然后比较外围的元素和序列的最后一个元素,判断是否需要插入,如果小,则插入。 时间复杂度:最优 O(n) 最差 O(n^2) 是否稳定:是 ...

    KoreyLee 评论0 收藏0

发表评论

0条评论

wanghui

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<