剑指offer——数组中的逆序对

题目描述

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。即输出P%1000000007

代码段1
代码段2

有几点需要注意:

1、函数返回类型和参数类型为 long long

2、具体考察归并排序的思想,所以在本次循环中求 left 和 right 时,要把 data 和copy 位置互换。因为此次调用期间,我们要保证经过上次排序后,data 的左右数组已经是有序的。因为InversePairsCore 函数的作用是把第一个参数调整顺序保存到第二个参数中,所以本次调用要把 data 作为第二个参数,令其保存经过上一次排好序的数组。

3、把当前数组分为两块,因为数组已经是排好序的,如果前一个数组当前值 i(7)大于后一个数组当前值 j(6),那么后一个数组位于当前值前面的个数为 j - start - length 的元素(4)也是小于(7)的。直接在逆序数 count 中进行累加(count += j - start - length)即可。

参考剑指offer原图

你可能感兴趣的:(剑指offer——数组中的逆序对)