0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何去实现并验证一种归并排序?

Android编程精选 来源:编程学习总站 作者:写代码的牛顿 2021-06-23 14:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、归并排序原理

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

pYYBAGDS1Z2AIca3AAC9vaeaQVo244.jpg

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

pYYBAGDS1aiAZ8XiAAC-h-sJ9SI729.jpg

相邻有序子序列进行合并,得到一个有序的序列。最终所有有序子序列进行合并得到一个完整的有序序列。

2、归并排序实现

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

poYBAGDS1cmANTI2AAEyFIiJlFo669.jpg

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

归并排序实现代码如下:

poYBAGDS1d6ASkdaAAB41za6Ycw167.jpg

3、归并排序算法验证

下面我们写一个小程序验证算法的正确性。

poYBAGDS1giAFRDqAAC2bDqUKrw960.jpg

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

pYYBAGDS1hmAfW8cAABW_2v8nO0145.jpg

从输出结果中,我们对照图解归并排序过程,完全符合。

责任编辑:lq6

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73120
  • 序列
    +关注

    关注

    0

    文章

    70

    浏览量

    20127

原文标题:图解归并排序

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Coremark测试集分析与性能优化思路

    core_list_join.c】 1.查找、基于值的归并排序、基于idx的归并排序,输出结果 2.最终将保证列表在离开函数之前返回到原始状态,从而使每次迭代得到相同的结果 3.输出CRC效验 注意:每个单元格中的实际数据
    发表于 10-24 08:21

    如何利用技术实现装置数据验证的全生命周期管理?

    效率与合规性。以下从 “阶段拆解 + 技术落地” 角度,详细说明实现路径,结合行业案例强化可操作性。 、先明确:装置数据验证全生命周期的核心阶段 在落地技术前,需先锚定全生命周期的
    的头像 发表于 09-05 15:23 519次阅读
    如何利用技术<b class='flag-5'>实现</b>装置数据<b class='flag-5'>验证</b>的全生命周期管理?

    一种全工作范围实现零电压开通的高效反激电源控制策略

    /摘要/反激拓扑广泛应用于中小功率开关电源中,为了提高反激拓扑的转换效率,本文提出了一种全输入电压及负载范围内可以实现原边MOSFET零电压开通(ZVS)的控制策略,从而提高了转换效率。本文通过理论
    的头像 发表于 09-03 17:03 3455次阅读
    <b class='flag-5'>一种</b>全工作范围<b class='flag-5'>实现</b>零电压开通的高效反激电源控制策略

    一种抗辐射加固检错纠错电路的设计

    电子发烧友网站提供《一种抗辐射加固检错纠错电路的设计.pdf》资料免费下载
    发表于 08-11 15:38 0次下载

    一种带通滤波器在无位置传感器转子检测中的应用

    摘 要:论文研究了一种直流无刷电机的无位置传感器的转子位置的硬件电路检测方法。结合传统“反电动势\"方法,分析设计了一种新的带通滤波器延时检测电路。该电路不仅可以抑制高频分量和消除直流
    发表于 08-04 14:56

    一种高效智能的光伏电站管理平台

    体化(集成多种储能管理功能等)。用户根据自身场景和需求,选择合适光伏电站管理平台及功能应用配置,从而实现发电效率最大化、运维成本最小化及碳中和目标。 光伏电站管理平台作为一种智能光伏管理系统,通过光伏智能管理
    的头像 发表于 07-18 09:20 823次阅读
    <b class='flag-5'>一种</b>高效智能的光伏电站管理平台

    一种新型宽带鞭状套筒天线

    电子发烧友网站提供《一种新型宽带鞭状套筒天线.pdf》资料免费下载
    发表于 05-28 14:05 0次下载

    低成本电源排序器解决方案

    绝大多数负载点DC-DC转换器可以将上个转换器的电源就绪输出连接至下个转换器的使能输入,实现上电排序。这种方法只适合比较简单的设计,不能满足多数现代微处理器和DSP的要求
    的头像 发表于 05-21 09:55 956次阅读
    低成本电源<b class='flag-5'>排序</b>器解决方案

    一种分段气隙的CLLC变换器平面变压器设计

    验证理论设计的正确性,为变压器制作提供理论依据。文中基于图1电路拓扑研究了平面变压器的设计与实现方法。 2 一种分段气隙的CLLC平面变压器设计图1中拓扑变压器副边三绕组并联,实际上等效为三个变压器
    发表于 03-27 13:57

    一种基于分数阶 PID 直流电机调速的 AGV 控制系统

    为设计一种低成本、抗干扰、稳定可靠的 AGV,提出一种基于磁带导航的 AGV 系统。采用 Megawin 公司的80C51单片机为控制核心,以并排对称设计的霍尔传感器实现循迹和纠偏,红
    发表于 03-25 15:10

    免费分享篇《机械设计与制造》网络首发论文——一种光电吊舱转台电机驱动装置设计与实现

    这里基于某机电科技公司的永磁无刷直流力矩电机和Microchip公司 dsPIC30F4012芯片设计了一种光电吊舱转台电机驱动装置。点击附件查看详情!*附件:一种光电吊舱转台电机驱动装置设计与实现.pdf
    发表于 03-10 16:23

    详解Linux sort命令之掌握排序技巧与实用案例

    在linux系统使用过程中,提供了sort排序命令,支持常用的排序功能。 常用参数 sort命令支持很多参数,常用参数如下:   短参数 长参数 说明 -n – number-sort 按字符串数值
    的头像 发表于 01-09 10:10 1580次阅读

    TimSort:个在标准函数库中广泛使用的排序算法

    排序算法呢? 本文将带你走进 TimSort,个在标准函数库中广泛使用的排序算法。 这个算法由工程师 Tim Peters 于 2001 年专为 Python 设计,自 Pytho
    的头像 发表于 01-03 11:42 951次阅读

    请问ADS5474是一种什么架构?

    请问ADS5474是一种什么架构
    发表于 01-02 07:27

    一种实现宽电压增益的改进型LLC-AHB变换器

    电子发烧友网站提供《一种实现宽电压增益的改进型LLC-AHB变换器.pdf》资料免费下载
    发表于 12-16 14:39 28次下载