归并排序算法详解

作者: 吃菜长肉 | 来源:发表于2020-01-08 12:33 被阅读0次

归并排序的核心就是将分割后的有序子序列合并成一个有序的序列。

给定一个无序的序列,分割成2段子序列,分割后,要开始合并2段子序列。而合并子序列的前提是子序列必须都是有序的,如果存在无序的子序列,那么将无序的子序列递归分割成更小的子序列,直到子序列有序。

分割后的子序列有序的条件是子序列只有一个元素,所以只有将无序序列的每个元素分割成一个序列,那么才可以开始合并。

所以归并排序的核心思路就是:

1.将无序的序列分成两部分
2.分割后的两段序列是否都是有序
a.都有序,把两段序列合并成一个有序的序列
b.不全是有序,把无序的序列重复步骤1和步骤2,直到将无序序列分割后的子序列都有序为止(分割后的子序列有序只能是序列只有一个元素)。

合并2段子序列的思路:

1.申请一个临时数组,数组大小为能够容纳2段子序列,设置2个指针i,j,分别指向2段子序列的起始位置;

2.如果指针i指向的元素小于j指向的元素,把i指向的元素放入临时数组,i++,否则把j指向的元素放入临时数组,j++。直到其中一个指针已经遍历到序列的尾部才结束序列的元素比较。

3.结束比较后,如果其中某个指针尚未移至序列尾部,那么将序列剩下的元素放入数组中,完成合并。

所以代码就可以这么写。

image image

推荐阅读:

堆排序其实没那么难

5分钟搞定快速排序

相关文章

  • 2018-06-30

    排序算法之归并排序 归并排序算法是排序算法中的经典算法之一,其核心思想是利用归并的思想实现的排序方法,该算法采用经...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • 排序算法之归并排序

    归并排序(Merge Sort) 归并排序是利用归并的思想实现排序的方式,该算法采用的是经典的分治算法 归并排序过...

  • 归并排序

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

  • 归并排序

    归并排序 这个排序算法是建立在归并操作上的一种有效的排序算法,算法主要采用分治法,归并排序的算法复杂度为O(n*l...

  • Java 9种排序算法详解和示例汇总

    冒泡排序、选择排序、直接插入排序、二分法排序、希尔排序、快速排序、堆排序、归并排序、基数排序,共9中排序算法详解和...

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

  • 算法入门——归并排序、希尔排序

    上篇文章我们学习了算法入门——堆排序,这篇文章我们学习算法入门——归并排序、希尔排序。 归并排序 归并排序是将一个...

  • 归并算法

    归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。归并算法的中心是归并两...

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

网友评论

    本文标题:归并排序算法详解

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