方法:

先追求表中的部分有序,再逐渐逼近全局有序。

例子:

image.png
第一趟
设定增量为d1=n/2=4,则有:
image.png
对各个子表进行直接插入排序
image.png
第二趟
缩小增量d的值,比如该例子缩小为上一躺的一般即d2=d1/2=2
image.png
对各个子表进行直接插入排序
image.png
第三趟
缩小增量d的值,比如该例子缩小为上一躺的一般即d3=d2/2=1
image.png
达成基本有序
对各个子表进行直接插入排序
image.png
最总得到一个全局递增的有序序列
过程汇总:
image.png
如果增量为增量为3
92191094_20220621-181207.gif

代码实现:

image.png
注意子表的交替

算法性能分析

image.png
image.png

稳定性:

不稳定排序
image.png

适用性:

仅适用于顺序表,不适用链表

总结:

image.png