希尔排序
希尔排序也就是改进的插入排序
希尔排序首先就是找出一个间隔,在通过这个间隔来排序,依次往后加
比如间隔是4
第一次就排0,4,8,12,…
第二次就排1,5,9,13…
然后减小间隔,再重复上面的过程,最后一定会有一次间隔为1的时候。
优点
- 在间隔大的时候,排序次数少
- 在间隔小的时候,排序距离近
- 比普通插入效率高,但是不稳定。
大体中间内容就是选择排序,不过下标不在是i
而是gap【间隔】
这里就面临着间隔如何选择的问题
二分,一半的一半的一半
Knuth序列
- h=1,最后一次间隔为1
- h=3*h+1,每运行一次就是一个新的间隔
找到最大的h然后依次递减,一直到1
最后我写copy的代码
1 |
|
下面这个是用chatGPT写的
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Safety-Blog!