希尔排序实际上是一种分治思想的插入排序。
插入排序不说了,不清楚看这里http://blog.youkuaiyun.com/zfx0906/article/details/6845566
分治思想,对增量为dk,dk递减,开始很多小序列,最后为一个大序列
相对直接插入排序,在希尔排序中,只不过增量不是1,而是dk
较好的增量序列是2^k-1,2^(k-1)-1,.....7,3,1,这样可使Shell排序时间复杂度达到O(N^1.5)(参考《希尔排序最佳增量序列研究》)
while((dlta+1)*2<length)
dlta=(dlta+1)*2-1;//计算出最大增量序列数
。。。
ShellInsert(L,length,dlta);// 算法是直接插入排序,只不过增量不是1,而是dlta
dlta=(dlta+1)/2-1;//增量递减
——————————————代码分界线———————————————————————————
//分治思想+插入排序,
//对增量为dk,dk递减,开始很多小序列,最后为一个大序列
//插入排序,只不过增量不是1,而是dk
//希尔排序实际上是一种分治思想的插入排序
#include<stdio.h>
#define Length 10
#define dLength 3
void Sh