题解 | #数组中的逆序对#
数组中的逆序对
https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5
int InversePairs(int* data, int dataLen ) {
// write code here
static int count = 0;
if (dataLen <= 1)
return 0;
int mid = dataLen / 2, i = 0, j = 0, k = 0, len = dataLen - mid;
int datacopyl[mid], datacopyr[len];
for (int w = 0; w < mid; w++)
datacopyl[w] = data[w];
for (int w = 0; w < len; w++)
datacopyr[w] = data[mid + w];
InversePairs(datacopyl, mid);
InversePairs(datacopyr, len);
while (i < mid && j < len) {
if (datacopyl[i] <= datacopyr[j]) {
data[k] = datacopyl[i];
k++;
i++;
}
else {
data[k] = datacopyr[j];
count += (mid - i);
count %= 1000000007;
k++;
j++;
}
}
while (i < mid) {
data[k++] = datacopyl[i];
i++;
}
while (j < len) {
data[k++] = datacopyr[j];
j++;
}
return (count % 1000000007);
}

