题目:
猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。
最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中 ai>aj 且 i<j 的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。注意序列中可能有重复数字。
思路:
1.整体思路:
(1)归并排序;
(2)在归并排序过程中记录逆序对的数量;
2.具体思路:
(1)归并排序
- 将序列从上往下逐层拆分;
- 将序列从上往下逐层合并;
将两个单调序列合并的规则如图所示
(2)记录逆序对数量
在 合并序列 时,如果出现了序号小值大的情况就计数,具体见代码
代码展示: