原理
1.把待排序的數組分成已排序和未排序兩部分,初始的時候把第一個元素認爲是已排好序的。
2.從第二個元素開始,在已排好序的子數組中尋找到該元素合適的位置並插入該位置。
3.重複上述過程直到最後一個元素被插入有序子數組中。
僞代碼
代碼
public static void insertionSort(int[] arr){
for (int i=1; i<arr.length; ++i){
int value = arr[i];
int position=i;
while (position>0 && arr[position-1]>value){
arr[position] = arr[position-1];
position--;
}
arr[position] = value;
}
}
穩定性
由於只需要找到不大於當前數的位置而並不需要交換,因此,直接插入排序是穩定的排序方法。