这道题可以用归并排序来解决。在归并排序的过程中,我们每次把两个有序的数列合并成一个有序的数列。同时,每次合并的过程中,我们也可以计算逆序对的数量。
具体做法如下:
- 初始化一个计数器 cnt = 0,用来统计逆序对的数量。
- 对数列进行归并排序。
- 在合并两个有序数列 A[p...q] 和 A[q+1...r] 的过程中,统计逆序对的数量。
如何统计逆序对的数量呢?我们可以用双指针的方法,每次比较 A[i] 和 A[j] 的大小,如果 A[i]>A[j],则表示 A[i...q] 中的元素都大于 A[j],因此这些元素都和 A[j] 构成了逆序对,我们可以把这些逆序对的数量加到 c