逆序对个数

Posted 诸葛阵御

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆序对个数相关的知识,希望对你有一定的参考价值。

题目:

有一串数字,如果前面的数字比后面的数字大,那么就称这两个数为一对逆序对。

输入一个长度为n的数组,输出逆序对的个数。

也就是说问有多少对(i, j)满足1 <= i < j <= n,且aii > ajj。

1 <= n <= 1000,1 <= aii <= 10^9


输入格式:

第一行一个整数n,表示数组长度 接下来n行,每行一个整数aii,表示数组的内容。

输出格式:

输出一行一个数字,表示逆序对的个数。


样例输入:

4
4
3
1
2

样例输出:

5

#include <stdio.h>
int main()
{
	int n;
	long long int a[1100];
	scanf ("%d",&n);
	long long int sum=0;
	for (int i=0;i<n;i++) {
		scanf ("%lld\\n",&a[i]);        //输入
	}
	for (int i=0;i<n;i++) {
		for (int j=i+1;j<n;j++) {
			if (a[i]>a[j]){
				sum++;             //计数
			}
		}
	}
	printf ("%d",sum);
	return 0;
}

 

以上是关于逆序对个数的主要内容,如果未能解决你的问题,请参考以下文章

POJ2299 Ultra-QuickSort

一道编程题:求逆序对的个数

逆序对个数 - 冒泡排序

Luogu1393动态逆序对(CDQ分治)

逆序对个数

c 中.统计给定数组中的逆序对个数