美文网首页
排序:四. 归并排序(合并两个已经排好序的数组)

排序:四. 归并排序(合并两个已经排好序的数组)

作者: DJN_ | 来源:发表于2018-12-13 09:03 被阅读0次

是创建在归并操作上的一种有效的排序算法。
平均、最好和最坏时间复杂度都为O(nlog2n)线性对数。是稳定的。
该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。

归并操作(merge)

也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。

迭代法

  1. 申请空间,使其大小为两个已经排序序列之,该空间用来存放合并后的序列
  2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置
  3. 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动被选中序列的指针到下一位置
  4. 重复步骤3直到某一指针到达序列尾
  5. 将另一序列剩下的所有元素直接复制到合并序列尾

实现类为 MergeSort

image.png image.png

递归法

原理如下(假设序列共有n个元素):

  1. 将序列每相邻两个数字进行归并操作,形成 n/2个序列,排序后每个序列包含两一个元素
  2. 若此时序列数不是1个则将上述序列再次归并,形成 n/4个序列,每个序列包含四三个元素
  3. 重复步骤2,直到所有元素排序完毕,即序列数为1

代码已上传 GitHub ,可以在 这里 找到

相关文章

  • 快速排序、归并排序

    快速排序 归并排序 体育委员的左右手指向排序,给排好序的两个数组合并merge

  • 算法系列笔记(五)归并排序

    归并排序 归并排序的想法就是将一个数组分成两个小数组,每个小数组分别排好序。然后将其按顺序合并到一个新的数组中,这...

  • 快速排序

    快速排序算法思想 快速排序和归并排序是互补的,归并排序将整个数组分成小数组,然后将排好序的小数组归并以将整个数组排...

  • 排序

    1.归并排序 归并排序概念归并排序核心思想是分治,即将完整数组拆分成更小的数组,最小单位位1,每个小的数组排好序,...

  • 排序:四. 归并排序(合并两个已经排好序的数组)

    是创建在归并操作上的一种有效的排序算法。平均、最好和最坏时间复杂度都为O(nlog2n)线性对数。是稳定的。该算法...

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

    merge 归并排序原理 归并排序 == 递归 + 合并 合并 将两个有序的数组合并成一个有序的大数组;(从两个小...

  • 21. Merge Two Sorted Lists

    思想 类似于归并排序的合并两个排序的数组 代码

  • 算法 | 归并排序

    归并排序 归并排序算法的核心就是 “归并”,将两个有序的数列合并,形成更大的有序数组。 归并排序的原理 上面说了,...

  • 归并排序

    归并排序的思想是分治:要对1...n的元素排序,先分别对的元素和的元素排序,再归并排好序的两个子序列。归并排序的复...

  • 3.归并排序

    1.什么是归并排序? 归并:将两个有序数组合并成一个更大的有序数组。 归并排序有两个主要操作:递归和合并。要将一个...

网友评论

      本文标题:排序:四. 归并排序(合并两个已经排好序的数组)

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