很多的文章真是把这算发写的稀烂!
这里的递增序列。可以随意写,最终h都会为1变成插入排序。希尔排序就是优化插入排序。适用于逆序数多的数组。
在这里插入代码片
```func ShellSort(Data[] int) { //希尔排序
length :=len(Data)
h := 1
for h < length/3 {
h = 3*h + 1 //递增序列
}
for h >= 1{
for i := h; i < length; i++ {
for j := i; j >= h && Data[j] < Data[j-h] ; j-=h {
temp := 0
temp = Data[j]
Data[j] = Data[j-h]
Data[j-h] = temp
}
}
h /= 3
}
}