Go-插入排序
package main import "fmt" //// 1 9 2 8 7 6 4 5 //// 1 9 2 8 7 6 4 5 //// 1 2 9 8 7 6 4 5 //// 1 2 8 9 7 6 4 5 //// 1 2 7 8 9 6 4 5 //// 1 2 6 7 8 9 4 5 //1 9 2 8 7 6 4 5 //1 9 9 //1 2 9 //1 19 29 8 // 1 19 29 29 // 1 19 19 29 // 1 8 19 29 func InsertTest(arr []int) []int { backup := arr[3] j := 3 - 1 //上一个位置循环找到位置插入 for j >= 0 && backup < arr[j] { arr[j+1] = arr[j] //从前往后移动 j-- } arr[j+1] = backup //插入 return arr } func InsertSort(arr []int) []int { length := len(arr) //数组长度 if length <= 1 { return arr //一个元素的数组,直接返回 } else { for i := 1; i < length; i++ { //跳过第一个 backup := arr[i] //备份插入的数据 j := i - 1 //上一个位置循环找到位置插入 for j >= 0 && backup < arr[j] { arr[j+1] = arr[j] //从前往后移动 j-- } arr[j+1] = backup //插入 fmt.Println(arr) } return arr } } func main() { arr := []int{1, 19, 29, 8, 3, 7, 4, 6, 5, 10} //fmt.Println(InsertTest(arr)) fmt.Println(InsertSort(arr)) }