希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。
希尔排序的具体细节:
step 1 对序列进行分组,组数为原组数的C分之一(这里取C为2),初始当成组数为序列长度,即每个数字算一个组。
step 2 对分组后的序列采用插入排序。
goto step 1
希尔排序的实现如下:
shellsort_original是最直观的实现,代码不够精简。
<