【归并排序】 详细解析 & 动图演示 & 逐图解析 & 洛谷P1177【模板】排序 & sort【快速排序】

归并排序

归并排序(merge sort)是高效的基于比较的稳定排序算法。

1.归并排序的复杂度分析

归并排序的时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

归并排序的空间复杂度 O ( n ) O(n) O(n)(这是因为他不是原地排序算法

2.细节解释

( l + r ) > > 1 = ( l + r ) ÷ 2 1 = ( l + r ) ÷ 2 (l+r)>>1=(l+r)\div 2^{1}=(l+r)\div 2 (l+r)>>1=(l+r)÷21=(l+r)÷2;

3.归并排序动图演示

在这里我们是默认了它以中间为节点分别排成了从大到小两个序列

这是因为有merge_sort(q,l,mid),merge_sort(q,mid+1,r)不断进行拆分的原因

3(1) 我们的拆分过程如下↓

在这里插入图片描述

这里的动图演示先执行了下方代码

	int k=0,i=l,j=mid+1;//i表示左半边的开始,j表示右半边的开始,k表示合并的个数
	while(i<=mid&&j<=r){
   
   //对半分后,mid是i的终点,r是j的终点
		if(q[i]<=q[j])  tmp[k++]=q[i++];//不断将tmp填充,i++
		else tmp[k++]=q[j++];//else 等同于if(q[i]>q[j]) 
	}

q[i]q[j]已经超过了他们的终点i终点midj终点r),那么就执行下方代码

	while
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花火Spark

鼓励,如星光,照亮我创作的前路

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值