【题目描述】
给定一个序列a1,a2,…,ana1,a2,…,an,如果存在i<ji<j并且ai>ajai>aj,那么我们称之为逆序对,求逆序对的数目。
【输入】
第一行为nn,表示序列长度,接下来的nn行,第i+1i+1行表示序列中的第ii个数。
【输出】
所有逆序对总数。
package Test1;
import java.util.Scanner;
public class a3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();//n表示序列长度
int []a=new int [n];//创建数组
for (int i = 0; i < a.length; i++) {
a[i]= sc.nextInt();//向数组填数字
}
int gs=0;//统计逆序对总数
int o=1;//j
while (true){
for (int i = 0; i < a.length; i++) {
int p=0;//临时存储变量
if (o+i<a.length){
p=o+i;
}
else {break;}
if (i<p&&a[i]>a[p]){
gs++;//逆序对总数++
}
}
if (o>a.length-1){
break;
}
o++;
}
System.out.println(gs);//输出逆序对总数
}
}
新手勿喷