题目描述
我们部门要排队唱歌,大家乱哄哄的挤在一起,
现在需要按从低到高的顺序拍成一列,
但每次只能交换相邻的两位,请问最少要交换多少次
输入描述
第一行是N(N<50000),表示有N个人
然后每一行是人的身高Hi(Hi<2000000,不要怀疑,我们以微米计数),持续N行,表示现在排列的队伍
输出描述
输出一个数,代表交换次数。
示例
输入:
6
3
1
2
5
6
4
输出:
4
参考解法:
import java.util.Scanner;
/**
* 分析题目需求
* 最终只需求逆序对的数量
*/
public class T_30 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int count = 0;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (a[j] > a[i]) {
count++;
}
}
}
System.out.println(count);
}
}