题目来源:牛客竞赛语法入门班数组字符串习题1008
题目描述
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。
比如一个元素个数为4的数列,其元素为2,4,3,1,则(2,1),(4,3),(4,1),(3,1)是逆序,逆序数是4,现在求给定数列的逆序数
输入描述
第一行为N,表示数列的元素个数(N<=1000)
第二行为N个用空格隔开的整数,其值在int范围内
输出描述
输出占一行,为逆序数的个数
示例1
输入
4
2 4 3 1
输出
4
解题思路
先将所给出的数据输入到数组中,然后从数组中第一项开始,对数组中的每一项判断是否大于其后面的项。
AC代码
#include <bits/stdc++.h>
int main(){
int n,i,j,num = 0;
int a[1050];
scanf("%d",&n);
for(i = 0;i < n;i++){
scanf("%d",&a[i]);
}
for(i = 0;i < n;i++){
for(j = i + 1;j < n;j++){
if(a[i] > a[j]){
num++;
}
}
}
printf("%d",num);
return 0;
}