排序算法(二)——插入排序原理及Java實現

插入排序原理:我覺得類似於鬥地主時給紙牌排序

(正序舉例)從第二個元素開始依次與前面的元素比較。

若此元素(比較元素)比前一位(被比較元素)的元素大,則停止比較,用此元素的後一位作爲比較元素進入下一次循環。

若此元素(比較元素)比前一位(被比較元素)的元素小,則繼續與前面第二位(被比較元素)比較,依次比較下去。

直至此元素比被比較的元素大時停止繼續比較,並將此元素插入到此時的被比較元素後面一位;

或已經與第一個元素比較完畢還不滿足停止條件,則停止比較並將此元素插入到第一元素的位置。


插入排序原理動態圖(摘自網絡)


Demo代碼 

//插入排序(正序)
int[] arr = {3, 13, 11, 9, 8, 1, 6, 10};

//因爲循環中涉及到下標-1,所以要從1開始
for (int i = 1; i < arr.length; i++) {
    //將arr[i]賦值給臨時值
    int temp = arr[i];

    int j = i;
    while(j > 0 && temp < arr[j-1]){
                
        arr[j] = arr[j-1];
        j--;
    }

    //如果j != i證明需要執行插入操作
    if(j != i){
        arr[j] = temp;
    }

}

System.out.println("最終結果:" + Arrays.toString(arr));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章