什么是稳定的排序算法?
归并排序是稳定的排序算法。
归并排序的稳定性分析:
归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素或者2个序列,然后把各个有序的段序列合并成一个有序的长序列,不断合并直到原序列全部排好序。
可以发现,在1个或2个元素时,1个元素不会交换,2个元素如果大小相等,没有外部干扰,将不会破坏稳定性。
那么,在短的有序序列合并的过程中,稳定性是没有受到破坏的,合并过程中如果两个当前元素相等时,把处在前面的序列的元素保存在结果序列的前面,这样就保证了稳定性。所以,归并排序也是稳定的排序算法。
扩展资料:
算法稳定性的判断方法:
在常见的排序算法中,堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。
需要注意的是,排序算法是否为稳定的是由具体算法决定的,不稳定的算法在某种条件下可以变为稳定的算法,而稳定的算法在某种条件下也可以变为不稳定的算法。
比如,快速排序原本是不稳定的排序方法,但若待排序记录中只有一组具有相同关键码的记录,而选择的轴值恰好是这组相同关键码中的一个,此时的快速排序就是稳定的。
参考资料来源:百度百科-排序算法稳定性
排序算法的各趟排序算法
[ ] [ ] [ ] [ ] [ ] [] [ ] [ ] [ ] [ ]在上面的排序方法中 直接插入排序 冒泡排序 归并排序和基数排序是稳定的 其他排序算法均是不稳定的 现举实例如下 以带*号的表示区别 希尔排序 [ * ]快速排序 [ * ]直接选择排序 [ * ]lishixinzhi\/Article\/program\/sjjg\/201311\/23531 ...
那些哪些排序算法是稳定的内在的
希尔排序、堆排序: 就地的不稳定排序 快速排序: 非就地的不稳定排序 选择排序: 不稳定排序 插入排序: 稳定排序
常见排序算法以及对应的时间复杂度和空间复杂度
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 如何将两个有序序列合并?(升序) {a[0]...a[i-1]},{b[0]...b[j-1]} 若 b[0]
排序的依据是什么
快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成...
排序法包括
最后,归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。归并排序的时间复杂度...
简述各种排序算法的优缺点
二、选择排序 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数 据元素排完。选择排序是不稳定的排序方法。n 个记录的文件的直接选择排序可经过n-1 趟直接选择排序得到有序结果:①初始状态:无序区为R[1..n],有序区为空。②第1...
什么是排序
时间复杂度仍然为O(nlogn)。归并排序 归并排序是一种稳定的排序算法,它的工作原理是将待排序的数据序列分为若干个子序列,每个子序列是一个有序的序列。然后再将有序子序列合并为整体有序序列。优点:稳定、时间复杂度为O(nlogn),适合大规模数据。缺点:需要额外的空间存储子序列。
冒泡排序法是如何排序的???
冒泡排序算法的原理:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到没有...
时间复杂度为O(n^2)的几种排序
code 空间复杂度为 O(1)在冒泡排序中,只有交换才可以改变两个元素的前后顺序。为了保证冒泡排序算法的稳定性,当有相邻的两个元素大小相等的时候,我们不做交换,相同大小的数据在排序前后不会改变顺序,所以冒泡排序是稳定的排序算法。时间复杂度(执行最多的单元执行的次数)。最佳情况:T(n) = O(...
常见排序算法归纳
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。举例:数组...
本沾双红: 快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法 基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法
南丹县17050056803: 在快速排序、堆排序、归并排序中,什么排序是稳定的? - ?
本沾双红: 归并排序是稳定的排序算法. 归并排序的稳定性分析: 归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素或者2个序列,然后把各个有序的段序列合并成一个有序的长序列,不断合并直到原序列全部排好序. 可以发现,在1...
南丹县17050056803: 数据排序算法的稳定与不稳定有些排序算法是稳定排序,如冒泡排序;有些排序算法是不稳定排序,如快速排序.如何理解排序算法的稳定与不稳定? - ?
本沾双红:[答案] LZ在瞎扯 假设有序列(123,3244,45,【123】) 排序后为(45,123,123,3244) 如果第一个123在排序后还在第二个【123】之前,即 45 123 【123】 3244 则算法是稳定的 否则 45 【123】 123 3244 即为不稳定
南丹县17050056803: 排序是什么意思 - ?
本沾双红: 排序是计算机的一种操作方法,其目的是将一组“无序”的记录序列调整为“有序”的记录序列,主要分为内部排序和外部排序.在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排...
南丹县17050056803: 排序算法的分类 - ?
本沾双红: 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.稳定度(稳定性) 一个排序算法是稳定的,就是当有两个相等记录的关键字R和S,且在原本的列表...
南丹县17050056803: 下列排序算法中,其中( )是稳定的. - ?
本沾双红:[选项] A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序