void shell_insert(int a[],int length, int dk) //对长度为length个数的数组a[]进行一次,增量为dk的插入排序
{
int i,tmp,j;
for (i = dk;i < length;i++)
{
if (a[i] < a[i - dk])
{
tmp = a[i];
for (j = i - dk; j >= 0 && tmp < a[j];j -= dk)
{
a[j + dk] = a[j];
}
a[j + dk] = tmp;
}
}
}
void shell_sort(int a[],int length,int delta[],int delta_length) // 增量为数组delta
{
for (int k = 0;k < delta_length;k++)
{
shell_insert(a,length,delta[k]);
}
}