漫画:什么是归并排序算法?
创始人
2025-05-29 18:16:08

归并排序是建立在归并操作的一种高效的排序方法,该方法采用了分治的思想,比较适用于处理较大规模的数据,但比较耗内存,今天我们聊聊归并排序

一、排序思想

一天,小一尘和慧能坐在石头上,眺望着远方

image-20230212223830927

image-20230212223846275

image-20230212223859988

image-20210425154735224

image-20230212223930424

image-20230212223943221

分而治之: 分开来去治理

image-20230212223959308

image-20230212224011999

image-20230212224027406

归并即合并之意

慧能随手画了一张图解释了一下

image-20230212224048367

治:治理,这里就是将数组排序

image-20230212224101284

image-20230212224127250

image-20230212224143819

对于合并,其实非常简单,我只要不断地取出两个有序数组中比较小的那一个放在一个辅助数组中(通过比较),直到把两个有序数组中的元素取完

image-20230212224158909

image-20230212224219964

二、代码

image-20230212224239292

image-20230212224255908

一尘已经了解了师傅的固定套路了

既然是不断地分,那用递归就非常简单了,什么时候终止递归呢?递归到只有一个元素的时候。一尘随手写下了如下代码

image-20230212225129976

这里需要说明的是,center = (left + right) / 2 最好改成 center = left + (right - left) / 2,因为 left + right 有可能溢出。

很快,一尘写下了 merge 函数的代码

image-20230212225157452

image-20230212225217123

三、时间复杂度

image-20230212225306699

一尘想到:这个有点烧脑啊,元素个数为 n,运行时间是多少啊?递归,递归,再递归…

image-20230212225329890

师傅一下看出了一尘的心思

image-20230212225357296

image-20230212225412612

假设处理的数据规模大小为 N

运行时间设为:T(N)

① 当把 N 分为两半时,那么处理大小为 N/2 子数组花费时间为:T(N/2)

② 合并花费时间与数据规模成正比:N

所以处理规模大小为N的数据所需要花费两个大小为 N/2 的子数组加上合并花费的时间

即:T(N) = 2T(N/2) + N

对于 N = 1,T(1) = 1

image-20230212225638608

image-20230212225651102

image-20230212225711161

image-20230212225727920

image-20230212225743067

image-20230212225758088

四、稳定性

image-20230212225950515

image-20230212230011647

image-20230212230040545

此时太阳已经下山,一尘和师傅走在回家的路上,在路上,一尘脑子又想了一下归并排序的全过程

image-20230212230158300

更多排序算法文章

1. 漫画:什么是冒泡排序算法?

2. 漫画:什么是选择排序算法?

3. 漫画:什么是插入排序算法?

4. 漫画:什么是希尔排序算法?

5. 漫画:什么是归并排序算法?

6. 漫画:什么是快速排序算法?

7. 漫画:什么是堆排序算法?

8. 漫画:什么是基数排序算法?

9. 漫画:什么是外部排序?

10. 什么是计数排序?

11. 十大排序算法极简汇总篇

推荐阅读

下载破 2w+,在校生必看,《程序员内功修炼》第二版出炉

从双非到大厂,帅地写了一本原创PDF送给大家

一个帮你拿offer的校招网站

算法刷题路线(系统+全面)

作者简介:我是帅地,校招拿到过不少大厂offer,毕业去了腾讯研发岗,毕业半年整到人生第一个 100 万,目前专注于写大学规划 + 校招求职相关的内容,著有个人原创网站 PlayOffer。

相关内容

热门资讯

SpringCloud学习笔记... 一、服务调用关系 服务提供者:暴露接口给其他微服务调用服务消费者:调用其...
围魏救赵中的主人公是谁(围魏救... 今天给各位分享围魏救赵中的主人公是谁的知识,其中也会对围魏救赵 主人公是谁进行解释,如果能碰巧解决你...
125升可乐是多少斤,125毫... 125升可乐是多少斤目录125升可乐是多少斤125毫升是多少10瓶是多少斤125ml,48瓶一共多少...
如何评价魅蓝5,魅蓝5值得推荐... 如何评价魅蓝5目录如何评价魅蓝5魅蓝5值得推荐的原因魅蓝note5到底好不好魅蓝note5和魅蓝no...
元气骑士机器人皮肤怎么获得,元... 元气骑士机器人皮肤怎么获得目录元气骑士机器人皮肤怎么获得元气骑士机器人一路上没受伤只是到恶魔房花了一...
win10安装cuda step1.安装cuda+cudnn: 1.检查自己显卡能安装什么版本的cud...
SLAM中后端优化的技术细节总... SLAM中后端优化的技术细节 本文档主要收集总结了一些SLAM大佬们讲解后端优化中偏理论的技术细节...
C语言结构体 本节主要讲解下结构体的一些易错点和重要内容 结构体变量定义 (使用typedef起别...
快手快闪特效如何做的,手机快手... 快手快闪特效如何做的目录快手快闪特效如何做的为什么我的快手里没有快闪这个功能?快手快闪视频制作技巧有...
祖宗十九代票房多少,祖宗19代... 祖宗十九代票房多少目录祖宗十九代票房多少祖宗19代总票房赚了吗为什么祖宗十九代的排片那么少,票房也很...
h5具体是什么,h5是什么意思... h5具体是什么目录h5具体是什么h5是什么意思h5是什么意思?什么是H5?h5具体是什么 H5...
HBase高手之路4-Shel... 文章目录HBase高手之路3—HBase的shell操作一、hbase的shell命令汇总二、需求三...
尽的拼音是什么,尽怎么读拼音尽... 尽的拼音是什么目录尽的拼音是什么尽怎么读拼音尽的读音尽管的尽。读音。尽的拼音怎么拼?尽的拼音是什么 ...
C++ , STL常用容器 STLSTL初识STL的诞生STL基本概念STL六大组件STL中的容器、算法、迭代器容器算法迭代器初...
开发环境的搭建(MacOS下学... 准备 硬件:单片机最小系统及电源,CH340芯片的usb-ttl线&#x...
西门子smart line 7... 西门子smart line 700 IE V3与温湿度变送器进行MODBUS RTU通信的具体方法示...
请问北京什么地方有卖宠物狗的,... 请问北京什么地方有卖宠物狗的目录请问北京什么地方有卖宠物狗的北京哪里有卖宠物狗的,北京正规卖狗宠物店...
常见的蘑菇的种类都包括哪些,蘑... 常见的蘑菇的种类都包括哪些目录常见的蘑菇的种类都包括哪些蘑菇有哪些种类分别是什么种类的蘑菇?蘑菇的种...
木乃伊什么意思啊,mummy什... 木乃伊什么意思啊目录木乃伊什么意思啊mummy什么意思啊木乃伊在希腊语中是什么意思木乃伊是什么意思 ...
储蓄卡不用了怎么办,储蓄卡怎么... 储蓄卡不用了怎么办目录储蓄卡不用了怎么办储蓄卡怎么注销不想用那张银行卡了,怎么办?普通储蓄卡不用了需...
使用uni.saveFile,... 需求:下载网络图片到系统相册问题:找不到uni.saveFile保存的临...
【华为OD机试 2023最新 ... 文章目录 题目描述输入描述输出描述用例C++ 题目描述 给定两个字符串string1和str...
学习Java开发可以做什么?到... Java工程师干什么?到底值不值得学Java? 不难发现,...
疯马皮是什么皮,疯马皮是什么材... 疯马皮是什么皮目录疯马皮是什么皮疯马皮是什么材料?防水吗?什么是疯马皮疯马皮是什么皮疯马皮是什么皮 ...
什么是麻辣烫,麻辣烫什么意思 ... 什么是麻辣烫目录什么是麻辣烫麻辣烫什么意思麻辣烫吃多了有什么坏处吗?麻辣烫是什么意思啊什么是麻辣烫 ...
10万左右公认最好的车(10万... 本篇文章极速百科给大家谈谈10万左右公认最好的车,以及10万左右公认最好的车最新款对应的知识点,希望...
华为双系统怎么切换辨别,华为手... 华为双系统怎么切换辨别目录华为双系统怎么切换辨别华为p9双系统怎么切换华为双系统怎么切换设置华为双系...
day11-函数 1. 函数作用 在实现某个功能对应的代码的时候,如果将实现功能对应的函数放到函数中&#...
Cadence :OrCAD命... 由于AD支持Multiple Names,最近用OrCAD画原理图,犯了...
巴黎圣母院讲的是什么内容啊,巴... 巴黎圣母院讲的是什么内容啊目录巴黎圣母院讲的是什么内容啊巴黎圣母院的内容简介有哪些?莎士比亚的《巴黎...