首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 經典範例:三整數由小到大輸出(兩兩比較交換法)

     編輯:Java 相關知識

Java 基礎邏輯練習:三變數排序的兩兩比較交換策略

不同於陣列排序,本範例直接操作三個獨立變數 i, j, k,透過三輪 if 比較交換,確保 i ≤ j ≤ k。此法無需陣列、迴圈,適合理解排序最基本的比較交換本質。

完整程式碼(含 Scanner 輸入)

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);
    }
}

邏輯推導證明

  1. 第一個 if 確保 i ≤ j。
  2. 第二個 if 確保 i ≤ k。此時 i 是三者中最小值。
  3. 第三個 if 僅需比較 j, k,確保 j ≤ k。
  4. 結論: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)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved