希尔排序
算法概述
希尔排序是插入排序的改进版本,它通过比较相距一定间隔的元素来进行排序。基本思想:
- 将待排序序列按照增量(gap)分组
- 对每组使用插入排序
- 逐步减小增量,重复上述过程
- 当增量减至1时,进行最后一次插入排序
算法实现
func ShellSort(arr []int) {
n := len(arr)
// 初始增量为数组长度的一半
for gap := n/2; gap > 0; gap /= 2 {
// 对每个子序列进行插入排序
for i := gap; i < n; i++ {
temp := arr[i]
j := i - gap
// 在子序列中进行插入排序
for j >= 0 && arr[j] > temp {
arr[j+gap] = arr[j]
j -= gap
}
arr[j+gap] = temp
}
}
}