在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
代码:
解题思路:如果按照一般的做法,利用两个for循环,那么时间复杂度就是O(n*n);利用归并排序的思想时间复杂度是O(nlogn)。两个指针分别指向前半部分的尾部 ,和后半部分的尾部,进行比较,如果前半部分尾部的数字大于后半部分尾部的数字前半部分尾部的数字一定比后半部分的都大,那么逆序列数字累加后半部分数字个数,在讲前半部分尾部的数字copy到拷贝数组中,防止重复比较,在比较后将copy数组复制到data。