看了程序员小灰的插入排序漫画,还是很好理解的。
我当初上大学的时候能有这么好的学习资料就好了。
下面是我自己用golang实现的插入排序算法
func InsertSort(data []int) {
var dataAmount = len(data)
for i:=1; i<dataAmount; i++ {
target := data[i]
for j:=i-1; j >=0; j-- {
if data[j] > target {
data[j+1] = data[j] //数据往后挪一个位置
} else {
data[j] = target
}
}
}
}
下面是测试用例
func TestInsertSort(t *testing.T) {
var testcases = [][]int {
{},
{1},
{3,1,5,98,2,34,6,2348,1},
}
for _, data := range testcases {
InsertSort(data)
for i:=0; i<len(data)-1; i++ {
if data[i] <= data[i+1] {
continue
} else {
t.Error("not sort well")
t.Errorf("data[%d]=%d, data[%d]=%d", i, data[i], i+1, data[i+1])
return
}
}
}
}
(本文 完)
参考资料: