洛谷P116车厢重组,将数据从小到大进行排序,实际上就是排序问题,比如4 3 2 1-->1 2 3 4 需要交换6次即可,用count记录步数,再将步数输出来即可,可以用冒泡排序、插入排序、选择排序、归并排序等等排序算法,考虑到数据量比较小,这里选用冒泡排序,代码如下:
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int len = cin.nextInt();//第一行输入数组长度
int a[]=new int[len];
int temp;
int count=0;
for(int i = 0;i<len;i++) {
a[i]=cin.nextInt();//第二行输入数组元素
}
for(int i=0;i<a.length-1;i++) {//比较数组中的前a.length-1个元素 最后一个自动排好
for(int j =0;j<a.length-1-i; j++) {//进入数组中,进行元素的两两比较
if(a[j]>a[j+1]) {//这里有个j+1,如果是比较前三个元素,则j<a.length-i-1,传入数组下标0、1即可
temp = a[j];//临时变量实现元素交换
a[j] = a[j+1];
a[j+1] =temp;
count++;//计步器记录交换的次数
}
}
}
System.out.println(count);//输出元素从小到大排序所交换的次数
}
}