不同於陣列排序,本範例直接操作三個獨立變數 i, j, k,透過三輪 if 比較交換,確保 i ≤ j ≤ k。此法無需陣列、迴圈,適合理解排序最基本的比較交換本質。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入三個數:");
int i = input.nextInt();
int j = input.nextInt();
int k = input.nextInt();
int x = 0; // 暫存變數
// 1. 確保 i 是最小
if (i > j) { x = i; i = j; j = x; }
if (i > k) { x = i; i = k; k = x; }
// 2. 確保 j ≤ k(此時 i 已最小)
if (j > k) { x = j; j = k; k = x; }
System.out.println(i + ", " + j + ", " + k);
}
}
if 確保 i ≤ j。if 確保 i ≤ k。此時 i 是三者中最小值。if 僅需比較 j, k,確保 j ≤ k。i ≤ j ≤ k 成立。請輸入三個數:30 10 20 10, 20, 30
public static void printSorted(int a, int b, int c) {
if (a > b) { int t=a; a=b; b=t; }
if (a > c) { int t=a; a=c; c=t; }
if (b > c) { int t=b; b=c; c=t; }
System.out.println(a + " " + b + " " + c);
}
| 方法 | 程式碼行數 | 可讀性 | 擴充性 | 效能 |
|---|---|---|---|---|
| 兩兩比較交換 | 極少 | 高(固定3數) | 差(N>3 需重寫) | 最快(固定比較次數) |
| 陣列+氣泡排序 | 中 | 中 | 好(通用N數) | O(N²) |
| Arrays.sort() | 最少 | 最高 | 最好 | O(N log N) |