C++
题解一:归并排序
假定有把一个无序序列一分为二为两个有序序列,然后对其归并,设置双指针 i i i , j j j 分别指向左半区间和右半区间,即两个元素 a a a 和 b b b 分别位于左右两个区间产生的逆序对数量为 s 0 s_0 s0,元素 a a a 和 b b b 同时位于左半区间或右半区间产生的逆序对数量为 s 1 s_1 s1 和 s 2 s_2 s2 。
那么,当指针 i i i 所指的元素 n u m s [ i ] nums[i] nums[i] 第一次大于指针 j j j 所指的元素 n u m s [ j ] nums[j] nums[j] 时,从此时起区间 [ i , m i d ] [i,mid] [i,mid] 里的所有元素都一定大于指针 j j j 所指的元素 n u m s [ j ] nums[j] nums[j] ,区间长度 m i d − i + 1 mid-i+1 mid−</