首先插入排序屬於穩定排序.
然後直接上代碼:
/**
* 插入排序
* 穩定排序.
* @author
* @date 2018年3月6日
*/
public class InsertionSortTest {
public static void main(String[] args) {
//原始數組
int[] arr = {6,3,7,2,3,1,8};
int len = arr.length,
temp = 0;
//i循環: 從1 到 len.
for (int i = 1; i < len; i++) {
//如果arr[i]<arr[i-1],j循環(從頭開始到i前面),目的是爲了找到插入位置
if (arr[i]<arr[i-1]) {
for (int j = 0; j < i; j++) {
if(arr[i] < arr[j]) {// 找到了插入位置
// 把i位置先騰空
temp = arr[i];
//K循環,把j到i之間的數據向後移.
// 從後面一個一個移
for (int k = i-1; k >= j; k--) {
arr[k+1] = arr[k]; // 數據向後移
}
// 把[i]插入到找到的位置
arr[j] = temp;
break;
}
}
}
}
// 驗證結果是否正確.
for (int i = 0; i < len; i++) {
System.out.print(arr[i] + ", ");
}
}
}
上面代碼是3個for循環實現的.
有興趣的朋友可以研究一下2個for循環實現. PS,把j循環和k循環合併.
--end.