归并排序及其复杂度

Posted Vincent(朱志强)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序及其复杂度相关的知识,希望对你有一定的参考价值。

归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

归并操作编辑
归并操作,也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。
如 设有数列6,202,100,301,38,8,1
初始状态:6,202,100,301,38,8,1
第一次归并后:6,202,100,301,8,38,1,比较次数:3;
第二次归并后:6,100,202,301,1,8,38,比较次数:4;
第三次归并后:1,6,8,38,100,202,301,比较次数:4;
总的比较次数为:3+4+4=11;
逆序数为14;

稳定性分析编辑
如果待排序的序列中存在两个或两个以上具有相同关键词的数据,排序后这些数据的相对次序保持不变,即它们的位置保持不变,通俗地讲,就是两个相同的数的相对顺序不会发生改变,则该算法是稳定的;如果排序后,数据的相对次序发生了变化,则该算法是不稳定的。关键词相同的数据元素将保持原有位置不变,所以该算法是稳定的

以上是关于归并排序及其复杂度的主要内容,如果未能解决你的问题,请参考以下文章

归并排序及其复杂度

算法排序02——归并排序介绍及其在分治算法思想上与快排的区别(含归并代码)

万字总结画解八大排序算法

leetcode刷题-- 2. 排序(待更新)

排序--01---概述---冒泡排序

python---常见排序算法