版权声明:博客内容为本人自己所写,请勿转载。 https://blog.csdn.net/weixin_42805929/article/details/83241805
逆序对数目 java
题目描述:
设A[1…n]是一个包含n个两两不同数的数组。若在i<j的情况下,有A[i]>A[j],则(i,j)称为A中的一个逆序对。请设计一个算法计算数组A中逆序对的数目。
输入
第一行一个数字表明数组的长度n,第二行数组的n个元素以空格分隔。
输出
逆序对的数目
样例输入
8
1 3 7 8 2 4 6 5
样例输出
10
代码:
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
System.out.println(count(arr));
}
public static int count(int[] arr) {
int count = 0;
if (arr.length == 0) {
return 0;
}
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
count++;
}
}
}
return count;
}
}