首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 插入排序填空題詳解:關鍵變數與迴圈條件逐行拆解

     編輯:程式設計綜合問答

題目給出插入排序框架,需填入四處關鍵程式碼:

n[0] = n[i];           // 代碼1:備份待插入值
j > 0 && n[0] < n[j]   // 代碼2:向前掃描條件(已排序區間從右向左)
n[j+1] = n[j];         // 代碼3:元素右移騰空位
n[j+1] = n[0];         // 代碼4:插入備份值

邏輯流程圖解

  1. 外層迴圈 i = 1 ~ length-1,每輪處理一張新牌。
  2. 將 n[i] 暫存至 n[0](哨兵位置)。
  3. 內層 j 從 i-1 向左掃描,只要 n[j] > n[0] 就右移。
  4. 掃描結束位置 j+1 即為插入點,寫回 n[0]。

完整可執行程式

public class InsertSortDemo {
    public static void sort(int[] n) {
        for (int i = 1; i < n.length; i++) {
            n[0] = n[i];
            int j = i - 1;
            while (j > 0 && n[0] < n[j]) {
                n[j + 1] = n[j];
                j--;
            }
            n[j + 1] = n[0];
        }
    }
    public static void main(String[] args) {
        int[] a = {5, 2, 9, 1, 5, 6};
        sort(a);
        System.out.println(Arrays.toString(a)); // [1, 2, 5, 5, 6, 9]
    }
}

理解「哨兵 + 右移 + 插入」三步驟,即可輕鬆應對各類填空與手寫排序考題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved