4.25——面试51数组逆序对(归并排序)

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
 
 
一、解题思路
(逆序对的思想就是从两个中比大小。若后边的小,逆序对+1。考虑用归并的思想)
1.递归地将源列表二分,并对两个列表排序(可以用sort()排序,我们需要的是两个排序好的子列表)
*2.对于两个排好序的列表,用归并的思想从两个子列表 l 和 r 的首端向后作比较。若 l[i] 比 r[j] 大,说明 r 中至少有 j 个 l[i] 的逆序对
 
二、源码

猜你喜欢

转载自www.cnblogs.com/xiaoqichaoren/p/12951827.html