数据结构之希尔排序图文详解及代码(C++实现)

问题:

对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]。

算法思想:

1、第一趟取增量d1(d1<n)把全部记录分为d1个组,所有间隔为d1的记录分在同一组,在各个组中进行直接插入排序。

2、第二趟取增量d2(d2<d1),重复上述的分组和排序。

3、以此类推,直到所取的增量dt=1(dt<dt_1<d_t-2<......<d2<d1),所有记录在同一组中进行直接插入排序为止。

图解:

数据结构之希尔排序图文详解及代码(C++实现)

代码:

数据结构之希尔排序图文详解及代码(C++实现)

数据结构之希尔排序图文详解及代码(C++实现)

运行结果:

数据结构之希尔排序图文详解及代码(C++实现)