希尔排序是第一批突破O[n*n]复杂度的算法之一,采用跳跃分割的策略,使待排序的记录基本有序。
void ShellSort(SqList *L)
{
int i,j;
int increment = L->length;
do
{
increment = increment/3+1; //增量序列
for(i=increment+1;i<=L->length;i++)
{
if(L->r[i]<L->r[i-increment])
{
L->r[0]=L->r[i];
for(j=i-increment;j>0&&L->r[0]<L->r[j];j-=increment)
{
L->r[j+increment]=L->r[j];
}
L->r[j+increment]=L->r[0];
}
}
}
while(increment>1);
}