洛谷 1908 逆序对(归并排序)

题目:
猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。
最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中 ai​>aj​ 且 i<j 的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。注意序列中可能有重复数字。

思路:
1.整体思路:
(1)归并排序;
(2)在归并排序过程中记录逆序对的数量;

2.具体思路:
(1)归并排序

  • 将序列从上往下逐层拆分;

4430f5de8ab74b50a227e535b921e85c.jpg

 

  • 将序列从上往下逐层合并;

d60a2b29551448eaa83d3d107e691b50.jpg

 

将两个单调序列合并的规则如图所示

828c87c5255648e6bbc1fd0a2062cc43.jpg(2)记录逆序对数量
在 合并序列 时,如果出现了序号小值大的情况就计数,具体见代码


代码展示:

f6f86eec6f934c53aa094a22618ae8b6.png

4e1653bfae574438a3637419540413d3.png 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值