希尔排序

希尔排序是基于插入排序的一个演进

插入排序很大一部分开销在于插入这个操作上,后面所有的数据都需要移动。

分割

我们先按N为步进来分割数组,如下为N=4

1       5       9 ……
  2       6       10 ……
    3       7       11 ……
      4       8       12 ……

对每个子数组进行排序

合并

实际上就是不分割数组,进行插入排序。

优点

分割之后,每个数组较小,能减少移动次数。

合并时,整个数组都是部分有序的,也能减少移动次数。