希尔shell排序
1、希尔排序——定义
希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由希尔 1959 年公布。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1、插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。
2、但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。
希尔排序 先追求部分元素有序,然后逼近全局有序!
实质是 分组插入的思想
2、希尔排序——步骤描述
按照一定的增量 gap ,先将待排序表,分割成若干个特殊子表;
形如 L[i , i+gap , i + 2gap, …,i + k*gap]
对于各个子表,进行直接插入排序
随后 缩小 gap ,重复上述过程,直到 gap = 1 为止
一般使用的增量序列**是: n/2 n/4 n/8 … 1