插入排序的要点是找一个合理的位置插进入
插入排序优点:原数组有序会非常快,稳定
golang数组没有插入的操作,所以得自己实现
a := []int{1,3,4,52,2,5,7,3,7,9}
for i:=1;i<len(a);i++{
todo := true
for j:=i-1;j>=0;j--{
if a[j]<a[i]{
todo = false
break
}
if j>0&&a[j]>=a[i] && a[i]>a[j-1]{
todo = false
mid := a[i]
a = append(a[:i],a[i+1:]...)//将待插元素挪出来
tmp := append([]int{},a[j:]...)//保存 插入位置后面所有元素
sli := append(a[:j],mid)//将待插元素放入
a = append(sli,tmp...)//合并
break
}
}
if todo==true{//说明最小插入到头部
mid := a[i]
a = append(a[:i],a[i+1:]...)
sli := append(a[:0],mid)
a = append(sli,a...)
}
}