1、归并排序原理
归并排序的核心思想是:利用分治策略,不断划分子序列直到不能划分为止,此时各个子序列是有序的,合并相邻有序子序列最终得到一个有序序列。我们利用下图解释划分子序列过程。

现在有原始序列[5, 10, 6, 8, 15, 11, 10, 7]采用递归的方式不断对序列进行划分,最终划分成单个元素的序列。 有序子序列合并过程如下图所示:

相邻有序子序列进行合并,得到一个有序的序列。最终所有有序子序列进行合并得到一个完整的有序序列。
2、归并排序实现
根据子序列合并过程图我们可以看出,本质上就是两个有序子序列进行合并成一个有序序列的过程。划分的过程还是在原始序列里进行划分,所以相邻的序列必定有边界进行划分,现假设两个相邻子序列边界分别是left、mid和right。其中left~mid构成一个子序列,mid+1~right构成另外一个子序列,两个序列相邻。合并代码如下:

每次将较小的值放在临时缓冲区中,其中一个子序列遍历完毕则退出循环,判断两个子序列是否都已遍历完毕,将未遍历完毕的子序列拷贝到临时缓冲区中,最后将临时缓冲区里的内容再复制到两个子序列的所在区间,这样两个子序列合并完毕且有序,为了便于观察合并过程,每进行一次归并则打印归并后的序列值。
归并排序实现代码如下:

3、归并排序算法验证
下面我们写一个小程序验证算法的正确性。

为了便于观察,原始数据和图解的一样,现编译运行输出如下:

从输出结果中,我们对照图解归并排序过程,完全符合。
责任编辑:lq6
-
代码
+关注
关注
30文章
4983浏览量
74533 -
序列
+关注
关注
0文章
70浏览量
20286
原文标题:图解归并排序
文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
MAX96792A聚合方式是并排聚合吗?
长光所提出并验证一种复耦合多波长激光器阵列:近红外气体传感的新型集成光源技术
定制IP如何赋能新兴产业增长,并推动半导体创新实现下一次飞跃
西门子与NVIDIA实现验证领域关键突破
MAX16050/MAX16051:电压监测与排序电路的理想选择
探索LM3880:三轨简单电源排序器的卓越性能与应用
MAX16050/MAX16051:具备反向排序功能的电压监控与排序电路
一种新型直流二总线供电+通讯=抢占通讯方式
光纤线芯都是按照什么颜色排序的
一种全工作范围实现零电压开通的高效反激电源控制策略
一种带通滤波器在无位置传感器转子检测中的应用
一种高效智能的光伏电站管理平台
如何去实现并验证一种归并排序?
评论