一、引入
希尔排序是一种分组插入排序的算法。
二、排序思路
- 首先取一个整数d1 = n/2,将元素分为d1个组,每组相邻量取元素距离为d1,在各组内直接进行插入排序;
- 取第二个整数d2 = d1/2, 重复上述分组排序过程,直到d1 = 1,即所有元素在同意最内进行直接插入排序。
- 希尔排序每趟并不使某些元素有序,而是使整体数据越来越接近有序;最后一趟排序使得所有数据有序。
如下图所示:n = 9 ; d1 = n // 2 = 4 ; 第一次将其分为四组;每组进行一次插入排序,排序完成后返回。
第二次将其分为 d1 = d // 2 = 2组后再重新进行插入排序:
直到最后d = 1时,再对整体进行一次插入排序
三、代码思路
1. 按照间隔为gap的插入