了解希尔排序之前,我们首先要了解插入排序。那么什么是插入排序呢?简单来说就像摸扑克牌一样,抓一张牌,插到手中牌的合适的位置,这就是插入排序。
而希尔排序,是把序列按照下标的一定增量分组,然后对每组进行插入排序。然后让增量逐渐减少,当增量为1时,整隔序列恰好被分为一组,算法结束。
什么意思呢,就是说首先确定一个增量,假如增量是4,那么a[0],a[4],a[8]会被分为一组,a[1],a[5],a[9]会被分为一组,a[2],a[6],a[10]被分为一组,a[3]....然后每个组各自进行插入排序,排序后每个组就是有序的,然后减少增量,重新分组、排序。。。直到增量为1。希尔排序通过这种策略使得整个数组在初始阶段达到从宏观上看基本有序,小的基本在前,大的基本在后。当增量为1的时候,这些序列大多数情况下已经基本有序,只需要进行微调即可。
话不多说,上图:
![e792fe82d1b03215bdcf65981076da48.png](https://img-blog.csdnimg.cn/img_convert/e792fe82d1b03215bdcf65981076da48.png)
![1f296b80408c00d785780298618d8294.png](https://img-blog.csdnimg.cn/img_convert/1f296b80408c00d785780298618d8294.png)