设待排序序列的长度为 n,选择若干个步长 gap(1 < gap < n),并将索引的差为 gap 的整数倍的元素作为一组,然后对这些分组分别使用直接插入排序进行排序,待整个序列基本有序之后,让 gap = 1,对整个序列进行一次直接插入排序。
其中:
第一趟排序过程中,gap = 5;
第二趟排序过程中,gap = 3;
第三趟排序过程中,gap = 1;
希尔排序的时间复杂度很难计算。根据经验,希尔排序的时间复杂度在 O(nlogn) 到 O(n2) 之间,平均时间复杂度是 O(n1.3)
O(1)