在快速排序、堆排序、归并排序中,什么排序是稳定的?

如题所述

归并排序是稳定的排序算法

归并排序的稳定性分析:

归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素或者2个序列,然后把各个有序的段序列合并成一个有序的长序列,不断合并直到原序列全部排好序。

可以发现,在1个或2个元素时,1个元素不会交换,2个元素如果大小相等,没有外部干扰,将不会破坏稳定性。

那么,在短的有序序列合并的过程中,稳定性是没有受到破坏的,合并过程中如果两个当前元素相等时,把处在前面的序列的元素保存在结果序列的前面,这样就保证了稳定性。所以,归并排序也是稳定的排序算法。

扩展资料:

算法稳定性的判断方法:

在常见的排序算法中,堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。

需要注意的是,排序算法是否为稳定的是由具体算法决定的,不稳定的算法在某种条件下可以变为稳定的算法,而稳定的算法在某种条件下也可以变为不稳定的算法。

比如,快速排序原本是不稳定的排序方法,但若待排序记录中只有一组具有相同关键码的记录,而选择的轴值恰好是这组相同关键码中的一个,此时的快速排序就是稳定的。

参考资料来源:百度百科-排序算法稳定性

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-28
归并排序是稳定的
“快速排序和堆排序都不稳定
不稳定:就是大小相同的两个数,经过排序后,最终位置与初始位置交换了。
快速排序:
27 23 27 3
以第一个27作为pivot中心点,则27与后面那个3交换,形成
3 23 27 27,排序经过一次结束,但最后那个27在排序之初先于初始位置3那个27,所以不稳定。
堆排序:
比如:3 27 36 27,
如果堆顶3先输出,则,第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27,这样说明后面的27先于第二个位置的27输出,不稳定。”
“2 归并排序(MergeSort)

归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组。”
参考资料: http://zhidao.baidu.com/question/26698104.html?an=0&si=1
http://zhidao.baidu.com/question/342775452.html?an=0&si=2本回答被网友采纳
第2个回答  2011-11-24
在常见排序中,只有希尔排序、堆排序、快速排序是不稳定的
第3个回答  2011-11-22
归并排序(n log n);稳定
堆排序 (n log n);不稳定
快排(n log n)不稳定
第4个回答  2011-11-22
堆排序最好了

在快速排序、堆排序、归并排序中,什么排序是稳定的?
归并排序是稳定的排序算法。归并排序的稳定性分析:归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素或者2个序列,然后把各个有序的段序列合并成一个有序的长序列,不断合并直到原序列全部排好序。可以发现,在1个或2个元素时,1个元素不会交换,2个元素如果大小相等,没有外部干扰,将...

在快速排序、堆排序、归并排序中,什么排序是稳定的?
归并排序是稳定的“快速排序和堆排序都不稳定.不稳定:就是大小相同的两个数,经过排序后,最终位置与初始位置交换了。快速排序:27 23 27 3以第一个27作为pivot中心点,则27与后面那个3交换,形成3 23 27 27,排序经过一次结束,但最后那个27在排序之初先于初始位置3那个27,所以不稳定。堆排序:...

哪些排序算法是稳定的
冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法。基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序,最后的次序就是高优...

在快速排序, 堆排序,归并排序中 哪个是最稳定的排序方法?
快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。2 归并排序(MergeSort)归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有...

快速排序的“空间”复杂度
冒泡排序,插入排序,归并排序,基数排序是稳定的排序。快速排序,选择排序,堆排序,希尔排序是不稳定的排序。\\r\\n冒泡排序,插入排序,选择排序的时间复杂度是O(n^2),归并排序,堆排序,快速排序的时间复杂度都是O(n*log(n)),空间复杂度冒泡排序,插入排序,选择排序都是O(1),归并排序为O(n)...

在数据结构当中排序的稳定性有哪四种,不稳定的又有哪四种?
没听过,不过我只知道一种就是若带排序集合中有相同数据项,若排序后这些相同的数据项位置不变,就是稳定的排序

数据结构(C#版)中、什么是稳定排序?什么是不稳定排序?
排序前是什么顺序,排序后也是什么顺序。比如a=1,b=3,c=1,a,b,c这3个数进行排序,a本来在c前面,如果能保证排序后,a还是在c前面,就是稳定排序,否则就是不稳定排序。稳定排序有:冒泡排序、插入排序、归并排序、基数排序 不稳定排序有:选择排序、快速排序、希尔排序(shell)、堆排序 ...

数据结构的排序算法中,哪些排序是稳定的,哪些排序是不稳定的?
一、稳定排序算法 1、冒泡排序 2、鸡尾酒排序 3、插入排序 4、桶排序 5、计数排序 6、合并排序 7、基数排序 8、二叉排序树排序 二、不稳定排序算法 1、选择排序 2、希尔排序 3、组合排序 4、堆排序 5、平滑排序 6、快速排序 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个...

排序方法哪个稳定
3. 对比其他排序方法,如归并排序相比冒泡排序和快速排序,在稳定性上更胜一筹。冒泡排序和快速排序在某些情况下可能会改变相等元素的相对顺序,因此它们不是稳定的排序方法。而堆排序虽然时间复杂度与归并排序相近,但其稳定性不如归并排序。因此,如果需要稳定的排序结果,归并排序是一个很好的选择。总之...

什么是稳定的排序算法?哪些算法属于稳定的排序算法?
不稳定的排序算法 1、快速排序:快速排序是一种基于分治思想的排序算法,通常通过选择一个枢纽元素并将数据分成两部分来实现排序。快速排序是不稳定的,因为在交换元素的过程中可能改变相等元素的相对顺序。2、堆排序:堆排序是一种基于二叉堆的排序算法,它不保证相等元素的相对顺序。在堆排序中,元素的...

相似回答