原理,把原始数组分成若干子数组,对每一个子数组进行排序,

继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组

举例

无序数组[6 2 4 1 5 9]

先看一下每个步骤下的状态,完了再看合并细节

第一步 [6 2 4 1 5 9]原始状态

第二步 [2 6] [1 4] [5 9]两两合并排序,排序细节后边介绍

第三步 [1 2 4 6] [5 9]继续两组两组合并

第四步 [1 2 4 5 6 9]合并完毕,排序完毕

输出结果[1 2 4 5 6 9]

合并细节

详细介绍第二步到第三步的过程,其余类似

第二步:[2 6] [1 4] [5 9]

两两合并,其实仅合并[2 6] [1 4],所以[5 9]不管它,

原始状态

第一个数组[2 6]

第二个数组[1 4]

--------------------

第三个数组[...]

第1步,顺序从第一,第二个数组里取出一个数字:2和1

比较大小后将小的放入第三个数组,此时变成下边这样

第一个数组[2 6]

第二个数组[4]

--------------------

第三个数组[1]

第2步,继续刚才的步骤,顺序从第一,第二个数组里取数据,2和4,

同样的比较大小后将小的放入第三个数组,此时状态如下

第一个数组[6]

第二个数组[4]

--------------------

第三个数组[1 2]

第3步,再重复前边的步骤变成,将较小的4放入第三个数组后变成如下状态

第一个数组[6]

第二个数组[...]

--------------------

第三个数组[1 2 4]

第4步,最后将6放入,排序完毕

第一个数组[...]

第二个数组[...]

--------------------

第三个数组[1 2 4 6]

[ 1 2 4 6 ]与[ 5 9 ]的合并过程与上边一样,不再分解

经典排序算法(六)--归并排序Merge Sort相关推荐

  1. 归并有效排序算法matlab,科学网—[用MATLAB写算法]之排序算法2)归并排序merge sort - 徐勇刚的博文...

    归并排序(merge sort)是一种利用分治策略(divide and conquer)进行排序的算法,算法复杂度为 $\Theta (nlog_{2}n)$ . filename: merge_s ...

  2. python实现基本算法之归并排序(Merge sort)

    基本算法之归并排序(Merge sort) 基本算法-04.归并排序(Merge sort)算法 .往期请看选择排序,插入排序,归并排序,快速排序等等都发布的!欢迎大家批评指正! 文章目录 基本算法之 ...

  3. 归并排序 java 迭代_经典排序算法之归并排序(示例代码)

    归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为 (大O符号).1945年由约翰·冯·诺伊曼首次提出.该算法是采用分治法(Divide an ...

  4. 排序算法之 Inplace Merge Sort

    Non-recursive Merge Sort (cpp_merge_sort.cc) ======================================================= ...

  5. 归并排序java_Java经典排序算法之归并排序详解

    一.归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列 ...

  6. 倒序排序_排序算法(六):Counting Sort 计数排序

    之前文章介绍的一些排序算法都是基于比较来进行排序的,故它们在平均情况下的时间复杂度最好也不过是线性对数级别.这里我们来介绍一种简单的基于非比较的排序算法--Counting Sort 计数排序,其时间 ...

  7. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)

    冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ...

  8. 经典排序算法 - 归并排序Merge sort

    经典排序算法 - 归并排序Merge sort 原理,把原始数组分成若干子数组,对每一个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组 举例 无序数组[6 ...

  9. python选择排序算法图解_python基本算法之实现归并排序(Merge sort)

    0.前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1.归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neuman ...

  10. 排序算法二:归并排序(Merge sort)

    归并排序(Merge sort)用到了分治思想,即分-治-合三步,算法平均时间复杂度是O(nlgn). (一)算法实现 1 private void merge_sort(int[] array, i ...

最新文章

  1. R语言dplyr包排序及序号函数实战(row_number、ntile、min_rank、dense_rank、percent_rank、cume_dist)
  2. 走过求职的季节(2)-十月 龙卷风
  3. C#根据execl批量修改图片名称
  4. Remoting系列专题---自定义序列化类
  5. Cell发文!施一公科研团队取得重大突破
  6. 使用vue-seamless-scroll自动滚动插件复制出来的数据点击事件无效的解决办法
  7. 处理大并发之二 对epoll的理解,epoll客户端服务端代码
  8. php高等数学,中国大学《高等数学(四)》期末答案高校邦《PHP语言程序设计》见面课答案...
  9. 智己汽车——比智能车更豪华,比豪华车更智能
  10. ubuntu安装完无法用xshell,远程链接
  11. 关于Hive在主节点上与不在主节点上搭建的区别之谈
  12. python链表逆序实例_python 单链表翻转的简单示例
  13. Spring MVC AOP 初步学习
  14. idea oracle 工具,IntelliJ IDEA的数据库管理工具实在太方便了
  15. 基于python的学生信息管理系统文献综述_学生信息管理系统----文献综述
  16. apr内存池简单应用
  17. 个税计算器 / 微信小程序开发
  18. stm32管脚重映射
  19. TCP的MTU探测功能
  20. 使用AWK和XARGS为文件批量改名

热门文章

  1. python对日志处理的封装
  2. 【Jenkins】构建后生成下载二维码并邮件通知
  3. tar、rpm和yum总结
  4. Oracle 导出DMP
  5. RHEL7下Nginx配置文件详解(二)
  6. javascript+Java 实现MD5加密登录密码
  7. 10月全球浏览器份额态势:Chrome领先Firefox7.34%
  8. LAMP环境搭建教程(转载)——实际安装,可用
  9. 不好的测试实践——软件测试的尽早介入
  10. 第5 章 引用类型2