插入排序原理:我覺得類似於鬥地主時給紙牌排序
(正序舉例)從第二個元素開始依次與前面的元素比較。
若此元素(比較元素)比前一位(被比較元素)的元素大,則停止比較,用此元素的後一位作爲比較元素進入下一次循環。
若此元素(比較元素)比前一位(被比較元素)的元素小,則繼續與前面第二位(被比較元素)比較,依次比較下去。
直至此元素比被比較的元素大時停止繼續比較,並將此元素插入到此時的被比較元素後面一位;
或已經與第一個元素比較完畢還不滿足停止條件,則停止比較並將此元素插入到第一元素的位置。
插入排序原理動態圖(摘自網絡)
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));