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

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

3天内不再提示

排序算法里面的另外一种排序算法:归并排序!

Q4MP_gh_c472c21 来源:txp嵌入式 作者:txp嵌入式 2020-11-16 16:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天继续给大家分享排序算法里面的另外一种排序算法:归并排序!

一、归并排序:

1、归并排序操作的核心思想:

a、确定分界点:mid=(l+r)/2

b、递归排序左边和右边(排完左右两边的数,就会成为两个有序的序列了)

c、归并(把上面的两个有序序列合并成一个有序的序列,用一个简单的词来说,就是合二为一!)

2、举例:

比如上图我们有两组已经排好的序列数字,我们要进行第三步合并,该如何进行呢?思路如下:

a、这里先定义一个空的数组res,它主要是为了临时存放合并序列排序好的数字;我们从图中可以看到,第一个序列指针i指向数字1,第二序列指针j指向2,这个时候我们要比较两个数字的大小,小的数字就放到临时数组res里面去,这里我们明显知道数字1小于2,所以把1放到临时数组res里去

b、然后指针i往下移动,如下图所示,再次进行比较,明显发现指针j指向的数字2更小,把它放到res里面去,然后指针j往下移动,指针i不动,后面依次类推

c、如下图所示,两个指针都指向了数字5,如果遇到两个数字一样的话,一般是把第一个序列的数字放到临时数组res里面去,这点稍微要注意一下

d、最后把临时数组里面的是数字放到原来的数组里面去

注意:一个算法稳定,并不能说它的时间效率是稳定的;这里的稳定是说两个序列中有两个数是相同的,如果在排完序之后,他们的位置还是没有发生变化的话,那么这个排序就是稳定的,反之亦然!

3、归并排序的平均时间复杂度的计算推导:

注:图片来源:https://visualgo.net/zh/sorting

从图片的纵性来分析,当拆解到1的时候,这个时候什么数等于n除于它等于1,通过计算,我们知道是logn,然后再从横向分析,我们要最多比较n个数字,所以归并排序的时间复杂度就是:nlogn

二、代码示例:

代码:

#include usingnamespacestd; constintN=1e5+10; intn; intq[N],tmp[N]; voidmerge_sort(intq[],intl,intr) { if(l>=r)return;//判断序列中是否为空或者只有一个数字,如果是的话,我们就不用排序了 //确定分界点 intmid=l+r>>1; //递归处理 merge_sort(q,l,mid); merge_sort(q,mid+1,r); //定义双指针 intk=0,i=l,j=mid+1; //归并处理 while(i<= mid && j <= r)   if(q[i] < q[j])tmp[k++] = q[i++];  else   tmp[k++] = q[j++];  //把源数组中剩余的数字(注意这里的数字一定是最小的)放到临时数组后面去  while(i <= mid)tmp[k++] = q[i++];  while(j <= r)tmp[k++] = q[j++];  //把临时数组中排好序的数字放到源数组中去  for(i = l, j =0;i<=r;i++,j++)q[i]=tmp[j]; } int main() {  scanf("%d",&n);  for(int i = 0;i

结果:

责任编辑:lq

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

    关注

    0

    文章

    70

    浏览量

    20256
  • 排序算法
    +关注

    关注

    0

    文章

    53

    浏览量

    10464
  • 数组
    +关注

    关注

    1

    文章

    420

    浏览量

    27463

原文标题:2020-1024=996:归并排序!

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    深入解析 LTC2923:电源跟踪与排序的理想解决方案

    深入解析 LTC2923:电源跟踪与排序的理想解决方案 在电子设备的设计中,电源的跟踪和排序至关重要,它直接影响着设备的性能和稳定性。LTC2923 作为款强大的电源跟踪控制器,为我们提供了简单
    的头像 发表于 02-28 15:35 281次阅读

    ADM1069:多功能电源监控与排序芯片的深度解析

    ADM1069:多功能电源监控与排序芯片的深度解析 在电子设备的设计中,电源管理与监控是至关重要的环节。今天,我们将深入探讨款功能强大的芯片——ADM1069,它为多电源系统的监控和排序提供了全
    的头像 发表于 02-28 14:05 219次阅读

    ADM1066:多功能电源监控与排序芯片的深度解析

    ADM1066:多功能电源监控与排序芯片的深度解析 在电子设备的设计中,电源的监控与排序是确保系统稳定运行的关键环节。ADM1066作为款功能强大的电源监控与排序芯片,为多电源系统提
    的头像 发表于 02-28 14:05 199次阅读

    LTC2937:六通道电源排序器与电压监控器的设计与应用

    LTC2937:六通道电源排序器与电压监控器的设计与应用 在电子系统设计中,电源管理是至关重要的环。合理的电源排序和电压监控能够确保系统的稳定运行,避免因电源问题导致的故障和损坏。今天,我们就来
    的头像 发表于 02-28 11:15 301次阅读

    ADM1169:多电源系统的监控与排序解决方案

    ADM1169:多电源系统的监控与排序解决方案 在电子工程师的日常工作中,多电源系统的监控与排序个关键且复杂的问题。今天要为大家介绍的Analog Devices的ADM1169 Super
    的头像 发表于 02-28 11:10 275次阅读

    探秘ADM1168:多功能电源监控与排序芯片的卓越之选

    探秘ADM1168:多功能电源监控与排序芯片的卓越之选 引言 在当今复杂的电子系统中,电源管理和监控至关重要。ADM1168作为款多功能的电源监控与排序芯片,为工程师们提供了强大而灵活的解决方案
    的头像 发表于 02-28 11:10 259次阅读

    ADM1166:多电源系统监控与排序的理想解决方案

    解决方案。下面我们来详细了解下这款芯片。 文件下载: ADM1166.pdf 、ADM1166的特性亮点 1. 全面的电源监控与排序 ADM1166能对多达10个电源进行监控和
    的头像 发表于 02-28 11:10 299次阅读

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

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

    LM3880-Q1:汽车级电源排序器的卓越之选

    因电源启动顺序不当而导致的各种问题。德州仪器(TI)推出的LM3880-Q1汽车级三轨简易电源排序器,就是这样款能满足多种应用需求的优秀产品。本文将深入剖析LM3880-Q1的特点、应用、设计要点等内容,为电子工程师们提供全面的
    的头像 发表于 02-26 17:10 545次阅读

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

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

    里可以添加本文要记录的大

    。本文讲解不同算法进行从小到大的升序排列的过程。 提示:以下是本篇文章正文内容,下面案例可供参考 、冒泡排序 示例:冒泡排序(bubblesort)是
    发表于 01-27 22:05

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

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

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

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

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

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