排序算法-希尔排序

排序算法-希尔排序
1.希尔排序是查入排序的扩展版.在扫描数据时,把移动的增量或减量由原来的1变成h.
2.h就是步长.对于每个h,对每个h单独使用插入排斥.

下面给出C代码的实现.
//a:数组
//l:数组的长度
void shellsort(int a[],int l)
{
int i,j;
int h;// 步长
int v;

// 计算步长
h=1;
while(h<=l/9)
h=3*h+1;

for(;h>0; h/=3)// 改边步长
{
for(i=h; i<=l; ++i)// 使用插入排斥
{
j=i;
v=a[i];
while(j>=h && v < a[j-h])
{
a[j]=a[j-h];
j-=h;
a[j]=v;
}
}
}
}

評論