合并排序-MergeSort

本文探讨了MergeSort算法在实际实现中的困惑,包括如何进行二分递归以及如何合并两个有序数组。核心在于理解递归过程和最终的合并步骤,不需要每次都创建新的数组,而是直接在原始数组上操作,利用额外的辅助数组协助完成排序。
摘要由CSDN通过智能技术生成

两个排好序的数组合并都很简单,但到具体怎么二分递归及代码实现就脑子短路了
比如递归返回什么?递归到最后怎么排序?
我还以为是每次递归回来就合并再返回到上一层,返回后用啥装呢?……我还以为每次把传过来的数组分成两个数组再进行操作……

也不是说完全想的没道理,就是想的太乱了。

首先,总共需要两个void函数,两个数组。
两个函数分别用来递归和每层递归后的最后的合并;
而一切的操作并不是通过每层创建两个临时数组实现,而是直接在A数组本身上操作,B数组起辅助作用

void mergesort(int a[],int left,int right) {
   
	mergesort(a,left,mid);
    mergesort(a,mid+1,right);
    merge(a,left,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值