在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
public class Solution {
public int InversePairs(int [] array) {
if(array==null|array.length==0) return 0;
int[] ret=new int[array.length];
ret[0]=-1;
for(int i=1;i<array.length;i++){
int j=i-1;
while(j>=0&&array[j]<array[i]) j--;
if(j<0) ret[i]=-1;
else ret[i]=j;
}
int count=0;
for(int i=1;i<array.length;i++){
int j=ret[i];
while(j!=-1){
if(ret[j]!=-1&&array[j]!=array[ret[j]])
count++;
j=ret[j];
if(j==-1) count++;
}
}
return count;
}
}