1,什么是插入排序?
就是假设手里拿这的是一副有序的牌,然后每次插入一张牌都去调整被改动的顺序
如:1 3 5 中插入2 则 2放在3的位置,3,5都往后挪动就是插入排序
2,程序实现:
package main
import (
"fmt"
)
func main() {
// 插入排序
data := []int{5,2,4,6,1,3}
insertSortDesc(data)
fmt.Println(data)
}
// 插入排序 - 升序
func insertSort(data []int) {
for j := 1; j< len(data); j++ {
// 获取当前值
current := data[j]
// 前n个都是有序的,现在需要做的是交换
i := j-1
for i >= 0 && data[i] > current {
data[i+1] = data[i]
i--
}
data[i+1] = current
}
}
// 插入排序 - 降序
func insertSortDesc(data []int) {
for j := 1; j< len(data); j++ {
// 获取当前值
current := data[j]
// 前n个都是有序的,现在需要做的是交换
i := j-1
for i >= 0 && data[i] < current {
data[i+1] = data[i]
i--
}
data[i+1] = current
}
}
网友评论