【JAVA】UVA 299 - Train Swapping

題目原文:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=235

題目大意:首行輸入有幾台車需要排列,第二行輸入有幾節車廂,第三行輸入車廂的號碼,最後輸出需要幾次才能將車廂號碼由小到大排序完成(一次只能和一台換)。

解題方向:使用氣泡排序法(Bubble Sort)

範例:假設今天有4節車廂,號碼為4,3,2,1,依照氣泡排序法排序:
4 3 2 1
3 2 1 4 3次(4→3,4→2,4→1)
2 1 3 4 2次(3→2,3→1)
1 2 3 4 1次(2→1)
####################
6次

import java.util.*;
public class main{
    public static void main(String[] args) {
        
            Scanner sc=new Scanner(System.in);
            
            int cases=sc.nextInt();
            
            for(int i =0;i<cases;i++){
            	int L = sc.nextInt();
            	int arr[]=new int[L];
            	
            	for(int j=0;j<L;j++){
            		arr[j] = sc.nextInt();
            	}
            	
            	int count=0;
            	
            	for(int j=0;j<L-1;j++){
            		for(int k=0;k<L-j-1;k++){
            			if(arr[k]>arr[k+1]){
            				int temp=arr[k];
            				arr[k] = arr[k+1];
            				arr[k+1] = temp;
            				count++;
            			}
            		}
            	}
            	
            	System.out.println("Optimal train swapping takes "+count+" swaps.");
            }
            
            
    }
};