希尔排序是一种基于插入排序的快速的排序算法,对于大规模乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组的一端移动到另一端。希尔排序的思想是使数组中任意间隔为
的元素都是有序的。这样的数组被称为
有序数组。
在进行排序时,如果
很大,我们就能将元素移动到很远的地方,为实现更小的
有序创造方便。
实现希尔排序的一种方法是,将间隔为
的元素使用插入排序,形成
有序数组,不停减小间隔,直到
。这样,希尔排序的实现就转化为了一个类似于插入排序但使用不同增量的过程。如图所示,根据数组的长度选择
分别为13、4、1,间隔为h的两个元素相比较,绿色和红色的元素互换位置,黑色元素位置不变。
Python代码如下:
import
希尔排序比插入排序和选择排序要快得多,并且数组越大,优势越大。
欧德飞:Python初级排序算法——选择排序(一)zhuanlan.zhihu.com