逆序对数目 java

版权声明:博客内容为本人自己所写,请勿转载。 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;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42805929/article/details/83241805