【代码】Go语言插入排序

前言

通过Go语言实现插入排序
先将第一个数据作为逻辑上已经完成排序的逻辑子数组
将数组从第二个数据开始遍历所有数据,每次遍历时,对比当前数据是不是已完成排序的子数组中某一个位置的数据较小(较大)的一个数,如果不是已完成排序的子数组中某一个位置的数据较小的数,就将当前遍历的数据放到该位置
在逻辑子数组中向前移动位置时,每次都将该位置的数据向后移一位,为了将无序的数据插入到有序的数组中
如果逻辑子数组中移动的位置超出了第一个位置,说明第一个位置就是合适的位置,就将当前遍历的无序的数据插入到有序的数组中

源代码

从小到大递增

1
2
3
4
5
6
7
8
9
10
11
12
13
func insertSortDesc(arr []int) {
for i := 0; i < len(arr); i++ {
var insertNumber int = arr[i]
var insertIndex int = i - 1
for insertIndex >= 0 && arr[insertIndex] < insertNumber {
arr[insertIndex+1] = arr[insertIndex]
insertIndex -= 1
}
if insertIndex+1 != i {
arr[insertIndex+1] = insertNumber
}
}
}

从大到小递减

1
2
3
4
5
6
7
8
9
10
11
12
13
func insertSortAsc(arr []int) {
for i := 0; i < len(arr); i++ {
var insertNumber int = arr[i]
var insertIndex int = i - 1
for insertIndex >= 0 && arr[insertIndex] > insertNumber {
arr[insertIndex+1] = arr[insertIndex]
insertIndex -= 1
}
if insertIndex+1 != i {
arr[insertIndex+1] = insertNumber
}
}
}

完成

参考文献

哔哩哔哩——尚硅谷