def mergesort(nums,le,ri): if le>ri-2: return 0 mi=le+(ri-le)//2 a=mergesort(nums,le,mi) b=mergesort(nums,mi,ri) c=merge(nums,le,mi,ri) return a+b+c def merge(nums,le,mi,ri): i,j=le,mi data=[] count=0 while i<mi and j<ri: if nums[i]<nums[j]: d
1. 最简单的思路,对每个值,遍历与其逆序的数组对:但时间复杂度太高: 2. 归并排序的思路: 先将数组分隔成子数组,先统计出子数组内的逆序对的数目,然后统计两个相邻子数组之间的逆序对的数目: int InversePairsCore(int *data, int * copy, int start, int end) { //递归介绍条件,只剩一个元素 if(start==end) { copy[start]=data[start]; ; } ; int left=InversePairsCo