1、希尔排序:(Shell`s Sort)
思想:
- 将待排序的表分成若干组
- 每组内进行直接插排,使整个序列基本有序
- 然后再对整个表进行更加细化的分组直接插排,始之基本有序
- 直至无法细化分组最终有序
分组方法:
- 对给定的一个步长d(d>0),将下标相差为d的倍数的元素分在一组。
- 希尔排序算法经典的d的取值依次为:
d1=n/2, d2=d1/2, ……,dk=1
(直至步长为1,不可再分组,其中n为表长,)
—— 即不同步长进行分组,各个分组内进行”直接插入排序”,直至不能再分
语言很苍白,用图例来解决
例:数组Arr[] = {100, 8, 20, 16, 14, 7, 105,50, 78, 9}
- Step1 : 步长d1为5,相同颜色的为一组,比如第一组为”100 & 7”,每个组进行直接插排,局部有序
- Step2