分治与归并

这篇博客介绍了归并排序的原理和过程,通过2路归并排序的例子展示其如何将无序序列转化为有序。同时,博主探讨了如何在归并排序的基础上计算逆序数,提供了相关输入输出示例,并分享了从B站视频获取的代码实现,但表示理解存在困难。
摘要由CSDN通过智能技术生成

通过先递的分解数列,再合数列就完成了归并排序。 感觉归并排序的名字就是这么来的吧

在归并排序的基础上再加上一行代码便可以捎带把逆序数求出来

归并的含义是将两个以上的有序组合合成一个新的有序表。
以下是2路归并排序:
初始关键字:[3] [8] [2] [4] [1] [9] [6] [5]
一趟归并后:[3 8] [2 4] [1 9] [5 6]
二趟归并后:[2 3 4 8] [1 5 6 9]
三趟归并后:[1 2 3 4 5 6 8 9]
核心操作是将前后相邻的两个有序序列归并成一个有序序列。

归并排序的维基百科

维基百科有张GIF非常形象

维基百科有张GIF非常形象

 

帮助理解

 对于原始的数组2,1,3,8,5,7,6,4,10,在整个过程执行的是顺序是途中红色编号1-20。虽然我们描述中说的是程序先分解,再归并,但实际过程是一边分解一边归并,前半部分分先排好序,后半部分再拍好,最后整个归并为一个完整的序列,途中的merge过程它所在层的两个序列的merge过程:下图展示了每个merge过程对作用于数组的哪部分(红色)。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值