美文网首页
图解归并排序

图解归并排序

作者: bocsoft | 来源:发表于2019-01-22 16:42 被阅读0次

原文地址为:https://www.cnblogs.com/chengxiao/p/6194356.html

基本思想:
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。

分而治之

image.png

可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程,递归深度为log2n。

合并相邻有序子序列
  再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8],来看下实现步骤。


image.png

总结:
归并排序是稳定排序,它也是一种十分高效的排序,能利用完全二叉树特性的排序一般性能都不会太差。java中Arrays.sort()采用了一种名为TimSort的排序算法,就是归并排序的优化版本。从上文的图中可看出,每次合并操作的平均时间复杂度为O(n),而完全二叉树的深度为|log2n|。总的平均时间复杂度为O(nlogn)。而且,归并排序的最好,最坏,平均时间复杂度均为O(nlogn)。

相关文章

  • java归并排序

    归并排序什么是归并排序:图解归并排序归并排序有两种实现方式,一是基于递归,而是基于迭代1)基于递归的归并排序: 基...

  • 归并排序

    图解排序算法(四)之归并排序 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用...

  • 归并排序

    来源:图解排序算法(四)之归并排序 - dreamcatcher-cx - 博客园 归并排序(MERGE-SORT...

  • 排序算法 --- 归并排序

    一、排序思想 归并排序是采用分治算法,即将一个大问题切分成一些小问题然后递归求解。归并排序的图解如下: 分的过程简...

  • [图解] 归并排序

    1. 图示过程 (1) 归并排序的流程 (2) 合并两个有序数组的流程 2. 动图展示 3. Java代码实现 4...

  • 图解归并排序

    原文地址为:https://www.cnblogs.com/chengxiao/p/6194356.html 基本...

  • 归并排序图解

    平均时间复杂度:O(nlogn) 最佳时间复杂度:O(n) 最差时间复杂度:O(nlogn) 空间复杂度:O(n)...

  • 排序算法

    约定 选择排序 冒泡排序 插入排序 希尔排序 归并排序1. 归并方法2. 自顶向下归并排序3. 自底向上归并排序 ...

  • 各类排序算法总结

    因为网上资料太多,没必要重复造轮子,故收集不错的博客如下,很多时候一图胜千言: 堆排序图解链接、归并排序图解链接

  • NLog(N)复杂度排序算法小结.md

    归并排序 动画过程演示 算法的基本实现 使用递归的方式,将数据进行分割分割 图解 代码实现 向上进行归并(也就是把...

网友评论

      本文标题:图解归并排序

      本文链接:https://www.haomeiwen.com/subject/iecrjqtx.html