一、原理
將需要插入的元素之前的所有元素看做是有序的集合,將需要插入的元素之後(包括當前的元素)的所有元素看做是無序集合。將需要插入的元素和有序集合的元素從後向前一一對比,若比需要插入的元素值大,則將需要插入的元素前移一位,被對比元素後移一位,循環往復,若比需要插入的元素小,則將需要插入的元素放置在該位置
二、實現代碼
private void insertionSort(int[] array) {
for(int i = 1; i < array.length; i++) {
//當前需要插入至有序集合的元素值
int current = array[i];
//需要插入元素的位置
int index = i;
//如果需要插入的元素前一個位置還有其他元素並且比需要插入的元素大
while(index-1 >=0 && array[index-1] > current) {
//則將被對比的元素後移一位,並且指針前移一位
array[index] = array[index-1];
index--;
}
//否則說明前一個元素比需要插入的元素小,將需要插入的元素放置在該位置
array[index] = current;
}
System.out.println(Arrays.toString(array));
}
三、時間複雜度