一、过程演示

i 从 1 开始,j 从 i - 1 开始

把 array[ i ] 的值记录在 temp 里

当array[ j ] 的值大于 temp,将array[ j ] 的值赋给 array[ j + 1],然后 j - -

当 array[ j ] 的值小于 temp 时,把temp 的 值 赋给array[ j + 1],还有一种情况是当j 为 0,
array[ j + 1] = temp;

然后后续重复这个过程
二、代码实现
java
public static void insertSort(int[] arr) {
for(int i = 1; i < arr.length; i++) {
int temp = arr[i];
int j = i - 1;
for(; j >= 0; j--) {
if(arr[j] > temp) {
arr[j + 1] = arr[j];
}else{
arr[j + 1] = temp;
break;
}
}
arr[j + 1] = temp;
}
}
时间复杂度:O(n^2)
空间复杂度: O(1)
稳定性: 稳定的排序
插入排序有一个特点,数据越有序,速度越快