栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言递归实现归并排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言递归实现归并排序

归并排序递归实现还是比较难理解的,感觉涉及递归一般理解起来都会比较有难度吧,但是看了b站视频,然后照着打下来,然后自己写了点注释,就发现不知不觉都大概懂了。

这里的归并讲的是升序排序

归并排序思路大概就是:先划分数组,将数组划分为左右半区,分成的左右半区,各自再划分左右半区,一直划分,直到最后左右半区的元素都为一个时,开始合并,因为都划分为一个元素了,那么此时两个元素的排序就非常简单了,只需要比较大小就可以排序了,那么回溯上去会发现每组都是两两有序了,那么直接再依次比较两组之间的排头元素即可,取较小的赋值给临时数组,然后排头元素就变成后一个元素,一直这么比较,直到两组数据有一组为空时,只需要将另一组不为空的接在临时数组后面即可,因为此时不为空的剩下的元素是有序的且都比此时有序的临时数组大,接完之后临时数组就变成有序的数组了,那么再将临时数组的元素复制到实际数组中去,最后释放临时数组空间,输出实际数组,归并排序结束,输出的元素也是排好序的元素了。

这样干讲一定很抽象

这是b站视频里的图,十分生动形象了吧。

链接也给上:https://www.bilibili.com/video/BV1Pt4y197VZ/?spm_id_from=pageDriver讲的十分不错的。

代码如下(除了视频里的注释,还加了点自己的注释)

#include
using namespace std;

void print_arr(int arr[], int n){
	for(int i=0; i 

本文参考https://www.bilibili.com/video/BV1Pt4y197VZ/?spm_id_from=pageDriver

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号