思想:将数组分为有序和无序两部分
时间复杂度:o(n^2)
空间复杂度:o(1)
有序部分:arr[0] 无序部分:arr[1]~arr[n-1]
遍历无序区间的所有元素,每次取出无序区间的第一个元素,arr[i]和有序区间的元素进行比较,将a[i]插入到有序区间的合适位置
java
public static void sort(int[] arr){
if(arr.length==0 ||arr == null) return;
int tmp,i,j;
for(i =1; i < arr.length; i++){
tmp = arr[i];//tmp取无序首元素值
//对有序进行插入排序
for(j = i-1; j >= 0&&arr[j] > tmp; arr[j+1] = arr[j], j--);
arr[j+1] = tmp;//数组元素移动后要将小的元素赋值,实现插入
}
}
go
func insertionSort(array []int) {
for i := 1; i < len(array); i++ {
tmp := array[i]
j := i - 1
for ; j >= 0 && array[j] > tmp; j-- {
array[j + 1] = array[j]
}
array[j + 1] = tmp
}
}