归并排序 之 求逆序数

前几天看树状数组,昨天做求逆序数的题,发现归并排序求逆序数更快一点,或者说是排序的时候顺便把逆序数给求了,于是学了一下,顺便整理一下。。。。。。

归并排序:说白了就是把一列数  递归  的分解为多个有序的子序列,然后再把子序列合并 为一列有序的数。

这就涉及两个过程:

1,递归划分:把序列分成个数尽量相等的两部分,两边的元素分别排好序;

2,合并求解:把两个有序表合成一个;

下面来说明上面两个过程:

第一步:假如给定一个序列:{3 9 1 2 5 6 7},第一次划分后分为两个子序列{3 9 1},{2 5 6 7},当然现在两边的序列依旧无序,现在我们要做的使序列有序(当然我们不能直接用排序函数直接对两部分排序,要不还要归并排序干嘛),那就继续第一步,把两个子序列继续递归分解,当递归到每个子序列中只包含一个元素时,呵呵,这个子序列当然就是有序的了,当第一步结束后我们得到如下七个子序列{3},{9},{1},{2},{5},{6},{7},并且每个子序列有序。

第二步:分别对两个有序子序列合并,对上面七个子序列第一次合并后是{3,9},{1,2},{5,6},{7},第二次合并后是{1,2,3,9},{5,6,7};第三次合并后就是{1,2,3,5,6,7,9},排序完成。

现在我们来说如何把两个有序子序列合并为一个有序序列:对序列1{1,2,3,9}和序列2{5,6,7};我们先比较序列1的第一个元素和序列2的第一个元素,小的元素存入序列3中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值