美文网首页
2.2 归并排序

2.2 归并排序

作者: EnjoyChen | 来源:发表于2017-07-20 21:25 被阅读0次

将两个有序的数组归并成一个更大的有序数组。

归并排序吸引人的性质是它能够保证将任意长度为N的数组排序所需时间和NlogN成正比。

主要缺点是所需的额外空间和N成正比。

属于稳定排序方法:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的)。

一 原地归并的抽象方法

先将所有元素复制到辅助数组中,然后再归并回a[]中。

二 自顶向下的归并排序

应用高效算法设计中分治思想最典型的一个例子。这段递归代码是归纳证明算法能够正确地将数组排序的基础:如果它能将两个子数组排序,它就能够通过归并两个子数组将整个数组排序。

分治思想:基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。

自顶向下的归并排序需要1/2NlgN至NlgN次比较,最多访问数组6NlgN次。

改进

1.对小规模子数组使用插入排序

2.测试数组是否有序

3.不将元素复制到辅助数组

三 自底向上的归并排序

统计意义上来说,自顶向下的归并排序速度略微大于自底向上的归并排序

自底向上的归并排序比较适合用链表组织的数据。

当数组长度为2的幂时,它和自顶向上的归并排序所用的比较次数和数组访问次数正好相同,知识顺序不同。


四 排序算法的复杂度

用决策树可以证明

相关文章

  • 常见排序算法

    1 前言 2 排序基础2.1 选择排序2.2 插入排序 3 高级排序算法3.1 归并排序3.1.1 插入排序与归并...

  • alg4th-2.2归并排序

    [TOC] algorithm 4th(2.2)归并排序 说明: 归并排序需要一个和要排序数组一样容量的的数组 归...

  • 2.2 归并排序

    将两个有序的数组归并成一个更大的有序数组。 归并排序吸引人的性质是它能够保证将任意长度为N的数组排序所需时间和Nl...

  • 排序算法

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

  • 2.2 归并排序(分类,合并)排序

    核心思想:将一个数组进行排序,可以先(递归)将他分成两半分别排序,然后把结果合并起来.若将两个有序表合并成一个有序...

  • 排序二:归并、快排

    文章结构 归并排序 快速排序 源码 1. 归并排序 1.1 什么是归并排序 归并排序的思想是:将待排序的区间平分成...

  • java归并排序

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

  • 算法—排序篇2

    1、归并排序(Merging Sort) 归并排序(Merging Sort): 就是利用归并的思想实现排序⽅法....

  • 常见的排序算法(2)

    要点 快速排序 归并排序 1.快速排序 2.归并排序

  • 排序算法之归并排序

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

网友评论

      本文标题:2.2 归并排序

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