问题描述
有一组数,对于其中任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一个高效的算法,计算给定数组中的逆序对个数。给定一个 int 数组 A 和它的大小 n ,请返回 A 中的逆序对个数。保证 n 小于等于 5000 。
测试样例:
[1,2,3,4,5,6,7,0],8
返回: 7
分析:
这个题只需要将数组遍历一遍即可,但是需要有两重循环,因为每一个数都要和后面的所有数做比较,如果前一个数大于后一个,那他两就是一组逆序对,以此类推。
import java.util.*;
public class AntiOrder {
public int count(int[] A, int n) {
int count = 0;
for(int i = 0;i< n-1 ;i++){
for(int j = i+1;j<n;j++){
if(A[i]>A[j]){
count++;
}
}
}
return count;
}
}