分治与归并

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

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

归并的含义是将两个以上的有序组合合成一个新的有序表。
以下是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过程对作用于数组的哪部分(红色)。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值