package main import "fmt" //把切片分成两部分,左边部分是排好序的,右边部分是未排序的 //假定第一个元素是已经排好的区域,然后从未排好序的区域里面最左边选一个和已排好序的区域的最后一个元素依次向前开始比较, //如果大于已排好序的最后一个元素就退出,否则就互换 func insertSort(list []int) []int { //假设索引0对应的第一个元素是排好序的 for i := 1; i < len(list); i++ { //遍历 从未排好序的元素里取一个值 temp := list[i] //已经排好顺序的 for j := i - 1; j >= 0; j-- { if temp < list[j] { list[j+1] = list[j] list[j] = temp } else { break } } } return list } func main() { slice := []int{7, 2, 9, 943, 4} res := insertSort(slice) fmt.Println(res) }