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

    文章

    4983

    浏览量

    74533
  • 序列
    +关注

    关注

    0

    文章

    70

    浏览量

    20286

原文标题:图解归并排序

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX96792A聚合方式是并排聚合吗?

    Category: Hardware Product Number: MAX96792A 关于MAX96792A的聚合方式,是并排聚合吗?文档中没有看到明确的说明。
    发表于 05-15 08:29

    长光所提出验证一种复耦合多波长激光器阵列:近红外气体传感的新型集成光源技术

    Sensing Applications”的研究论文。论文通讯作者为梁磊研究员,第作者为博士生胡淼。 该研究提出实验验证一种基于高阶表面光栅和周期性电流注入的8通道复耦合分布式
    的头像 发表于 05-15 06:41 36次阅读
    长光所提出<b class='flag-5'>并</b><b class='flag-5'>验证</b><b class='flag-5'>一种</b>复耦合多波长激光器阵列:近红外气体传感的新型集成光源技术

    定制IP如何赋能新兴产业增长,推动半导体创新实现下一次飞跃

    ,由设计师将其集成在整个芯片设计中,从而可以大幅度缩短设计周期降低设计风险。验证IP(Verification IP,又称VIP)是一种预打包的、可重复使用的代码组件集合,专门用于验证
    的头像 发表于 05-07 17:58 1118次阅读
    定制IP如何赋能新兴产业增长,<b class='flag-5'>并</b>推动半导体创新<b class='flag-5'>实现下一</b>次飞跃

    西门子与NVIDIA实现验证领域关键突破

    西门子与 NVIDIA 密切合作,使西门子 Veloce proFPGA CS 硬件辅助验证与确认系统,能够支持芯片设计工程师与系统架构师在首轮流片前,运行采集数万亿次验证周期,从而实现
    的头像 发表于 04-16 11:18 517次阅读

    MAX16050/MAX16051:电压监测与排序电路的理想选择

    Analog Devices公司的MAX16050/MAX16051这两款具有反向排序能力的电压监测/排序电路。 文件下载: MAX16050.pdf 、产品概述 MAX16050和MAX16051是两款
    的头像 发表于 03-02 09:15 193次阅读

    探索LM3880:三轨简单电源排序器的卓越性能与应用

    提供了一种简洁而高效的解决方案。 文件下载: lm3880.pdf 、LM3880的特性亮点 1. 多轨排序能力 LM3880可以通过单个输入信号对三个电压轨进行排序,而且还能轻松级
    的头像 发表于 02-26 17:20 690次阅读

    MAX16050/MAX16051:具备反向排序功能的电压监控与排序电路

    /MAX16051电压监控/排序电路,凭借其出色的性能和丰富的功能,为工程师们提供了可靠的解决方案。本文将深入介绍这两款器件的特点、工作原理及应用要点。 文件下载: MAX16051ETI+T.pdf 、器件
    的头像 发表于 01-31 17:15 1014次阅读

    一种新型直流二总线供电+通讯=抢占通讯方式

    POWERBUS二总线是一种可供电现场总线,不同于4根线的485通信,可实现无极性二总线自由拓扑,如下图: 早些年,我们与RS485样只能轮询通讯,低效! 但PB332与EV621
    发表于 01-30 12:59

    C语言插入排序算法和代码

    插入排序排序算法的一种,它不改变原有的序列(数组),而是创建个新的序列,在新序列上进行操作。   这里以从小到大排序为例进行讲解。
    发表于 01-15 06:44

    光纤线芯都是按照什么颜色排序

    多次有朋友留言问到,光纤熔接颜色如何排序,这个在实际应用中还是比较多的,那么今天我们就不讲原理了,直接用图文简单明了讲光纤熔接色谱,大家可以了解下。 、常规排序 1、4芯的排序:蓝、
    的头像 发表于 12-19 11:02 2586次阅读

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

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

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

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

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

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

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

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

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

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