`
mixer_a
  • 浏览: 341806 次
社区版块
存档分类
最新评论

排序算法第三篇——归并排序

 
阅读更多


算法描述:

归并(Merge)排序是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

对一个数组进行归并排序主要分为以下三步:

1、分解。将一个数组分为两个个数组。

2.、治之。对分好的两个数组,分别用归并排序算法进行排序。

3、归并。将两个数组归并。

Java源代码:

运行结果:

排序前:
824 692 469 255 518 492 177 403 325 350
合并 第1到1之间的元素 和 第2到2之间的元素
692 824 469 255 518 492 177 403 325 350
合并 第1到2之间的元素 和 第3到3之间的元素
469 692 824 255 518 492 177 403 325 350
合并 第4到4之间的元素 和 第5到5之间的元素
469 692 824 255 518 492 177 403 325 350
合并 第1到3之间的元素 和 第4到5之间的元素
255 469 518 692 824 492 177 403 325 350
合并 第6到6之间的元素 和 第7到7之间的元素
255 469 518 692 824 177 492 403 325 350
合并 第6到7之间的元素 和 第8到8之间的元素
255 469 518 692 824 177 403 492 325 350
合并 第9到9之间的元素 和 第10到10之间的元素
255 469 518 692 824 177 403 492
325 350
合并 第6到8之间的元素 和 第9到10之间的元素
255 469 518 692 824
177 325 350 403 492
合并 第1到5之间的元素 和 第6到10之间的元素
177 255 325 350 403 469 492 518 692 824

该算法的时间复杂度为O(nlog2n),算法是稳定的。

分享到:
评论

相关推荐

    算法:算法C语言实现 第1-4部分 基础知识、数据结构、排序及搜索

    第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,...

    算法分析与设计 课程作业 完整版.docx

    第三章——分治算法 1.归并排序 2.快速排序 3.折半查找 4.选择问题 5.最大子段 第四章——贪心算法 1.背包问题 2.多机调度问题 3.单源最短路径-Dijkstra算法 4.最小代价生成树问题-Prim算法 5.最小代价生成树问题-...

    10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)

    我简单的绘制了一下排序算法的分类,蓝色字体的排序算法是我们用python3实现的,也是比较常用的排序算法。 Python3常用排序算法 1、Python3冒泡排序——交换类排序 冒泡排序(Bubble Sort)也是一种简单直观的排序...

    JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】

    本文实例讲述了JS前端面试必备——基本排序算法原理与实现方法。分享给大家供大家参考,具体如下: 排序算法是面试及笔试中必考点,本文通过动画方式演示,通过实例讲解,最后给出JavaScript版的排序算法 插入排序...

    数据结构与算法分析第二版 ---C语言描述(附加答案)

    排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些简单排序算法的下界7.4 希尔排序7.4.1 希尔排序的最坏情形分析7.5 堆排序7.5.1 堆排序的分析7.6 归并排序7.6.1 归并排序的分析7.7 快速排序...

    数据结构讲义(严蔚敏版)(含算法源码).rar

    第3章 栈和队列 17 一、 基础知识和算法 17 1. 栈 17 2. 链栈 17 3. 顺序栈 18 4. 队列 19 5. 链队列 20 6. 循环队列 20 7. 栈和队列比较 22 8. 简化的栈和队列结构 23 9. 栈和队列的应用 23 二、 习题 24 第4章 串 ...

    数据结构与算法分析C描述第三版

    第3章 表、栈和队列   3.1 抽象数据类型(ADT)   3.2 表ADT   3.2.1 表的简单数组实现   3.2.2 简单链表   3.3 STL中的向量和表   3.3.1 迭代器   3.3.2 示例:对表使用erase   3.3.3 const...

    数据结构与算法分析_Java语言描述(第2版)

    第3章 表、栈和队列 3.1 抽象数据类型 3.2 表ADT 3.2.1 表的简单数组实现 3.2.2 简单链表 3.3 JavaCollectionsAPI中的表 3.3.1 Collection接口 3.3.2 Iterator接口 3.3.3 List接口、ArrayList类和LinkedList类 ...

    数据结构与算法分析

    第3章 表、栈和队列   3.1 抽象数据类型(ADT)   3.2 表ADT   3.2.1 表的简单数组实现   3.2.2 简单链表   3.3 STL中的向量和表   3.3.1 迭代器   3.3.2 示例:对表使用erase   ...

    Algorithms in C 1至5册 中文版

    《算法:C语言实现(第5部分)图算法(原书第3版)》是深入论述算法的三卷本教程《算法:C语言实现》(第3版)中的第二卷——图算法。作者在这次修订中重写了许多内容,增加了数千个新练习、数百个新图表、数十个新程序,...

    数据结构与算法分析Java语言描述(第二版)

    排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些简单排序算法的下界7.4 希尔排序7.5 堆排序7.6 归并排序7.7 快速排序7.7.1 选取枢纽元7.7.2 分割策略7.7.3 小数组7.7.4 实际的快速排序例程...

    数据结构与算法分析_Java语言描述(第2版)]

    排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些简单排序算法的下界7.4 希尔排序7.5 堆排序7.6 归并排序7.7 快速排序7.7.1 选取枢纽元7.7.2 分割策略7.7.3 小数组7.7.4 实际的快速排序例程...

    严蔚敏 数据结构(C语言版) 代码 23490 书中算法

    第3章 栈和队列 44 3.1 栈 44 3.1.1 栈的类型定义 44 3.1.2 顺序栈的表示和实现 45 3.1.3 链栈的表示和实现 47 3.2 栈的应用 48 3.2.1 数制转换 49 3.2.2 括号匹配的检验 49 3.2.3 表达式求值 51 ...

    数据结构习题答案(全部算法)严蔚敏版

    第3章 栈和队列 3.1 栈 3.1.1 栈的定义及其运算 3.1.2 栈的顺序存储结构(向量) 3.1.3 栈的链表存储结构 3.1.4 栈的应用 3.2 队列 3.2.1 队列的定义及运算 3.2.2 队列的顺序存储结构(向量) 3.2.3 队列的...

    数据结构与算法分析 Java语言描述第2版

    排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些简单排序算法的下界7.4 希尔排序7.5 堆排序7.6 归并排序7.7 快速排序7.7.1 选取枢纽元7.7.2 分割策略7.7.3 小数组7.7.4 实际的快速排序例程...

    c语言数据结构算法演示(Windows版)

    (1)多路平衡归并排序(K-Merge) (2)置换-选择排序(Repl_Selection) 各个算法演示屏的补充说明如下: 1. 顺序表和链表的插入、删除和链表的生成 算法演示屏由显示顺序表或链表的图示、算法文本及变量等三个...

    数据结构与算法分析-Java语言描述(第2版)_2_2

    练习 参考文献第7章 排序 7.1 预备知识 7.2 插入排序 7.2.1 算法 7.2.2 插入排序的分析 7.3 一些简单排序算法的下界 7.4 希尔排序 7.5 堆排序 7.6 归并排序 7.7 快速排序 7.7.1 选取枢纽元 ...

    数据结构与算法分析-Java语言描述(第2版)_1_2

    练习 参考文献第7章 排序 7.1 预备知识 7.2 插入排序 7.2.1 算法 7.2.2 插入排序的分析 7.3 一些简单排序算法的下界 7.4 希尔排序 7.5 堆排序 7.6 归并排序 7.7 快速排序 7.7.1 选取枢纽元 ...

Global site tag (gtag.js) - Google Analytics