package main
import "fmt"
// InsertSort 是用来排序一个整型的数组
// 算法设计的思路是,将数组划分成两部分,第一部分是有序的,第二部分是无序的
// 每次从无序部分取一个元素,将这个元素插入到有序部分,保持有序部分的有序性质
// 直到无序部分为空
func InsertSort(arr []int, L int) {
for i := 1; i < L; i++ {
vi := arr[i]
j := i
for ; j > 0 && arr[j-1] >= vi; j-- {
arr[j] = arr[j-1]
}
arr[j] = vi
}
}
func main() {
arr := []int{9, 4, 6, 7, 5, 8, 3, 2, 1, 0}
fmt.Println(arr)
InsertSort(arr, len(arr))
fmt.Println(arr)
}
//提示错误:cannot use a (type [10]int) as type []int in argument to InsertSort
网上找了段代码贴上
```
func main() {
// 定义数据源
mySlice := []int{1,43,54,62,21,66,32,78,36,76,39}
sliceLen := len(mySlice)
for i:=1; i<sliceLen;i++{
// 获得当前需要比较的元素值。
tmp := mySlice[i]
// 内层循环控制 比较 并 插入
for j:=i-1;j>=0;j--{
// mySlice[i] 需要插入的元素
// mySlice[j] 需要比较的元素
if tmp < mySlice[j] {
// 如果插入的元素小,交换位置。将后边的元素与前边的元素互换
mySlice[j+1] = mySlice[j]
// 将前面的数设置为当前需要交换的数
mySlice[j] = tmp
} else {
// 由于是已经排序好的,则不需要再次比较。
break
}
}
}
fmt.Println(mySlice)
}
```
#1