给定一个数列,求数列的逆序数对总个数(逆序数对就是指数列中的两个数,排在前面的数比排在后面的数大,这样就构成了一个逆序数对)。
例如: 4 2 1 3
这个数列的逆序数对有: (4, 2);(4, 1);(4, 3);(2, 1);总共有4个逆序数对。
PS:其实完全是使用了归并排序的思想,只是在合并的时候多加了一句统计该范围内的逆序数的个数,我们累加每一个小区间的逆序数个数,自然就得到了整个数列的逆序数对总个数。
参考代码:
#include<stdio.h>
int arr[] = { 5, 15, 99, 45, 12, 1, 90, 19, 33, 41 };
int tmp[100];
int nInver