void ShellSort(int list[], int length)
{
for (int dk = length / 2; dk > 0; dk /= 2)
{
for (int i = dk + 1; i < length; ++i)
{
if (list[i] < list[i - dk])
list[0] = list[i];
int j;
for (j = i - dk; j > 0 && list[j] > list[0]; j -= dk)
list[j + dk] = list[j];
list[j + dk] = list[0];
}
}
}
void ShellSort(int list[], int length)
{
for (int dk = length / 2; dk > 0; dk /= 2)
{
for (int i = dk + 1; i < length; ++i)
{
if (list[i] < list[i - dk]) {
int tmp = list[i];
list[0] = tmp;
int j;
for (j = i - dk; j > 0 && list[j] > tmp; j -= dk)
list[j + dk] = list[j];
list[j + dk] = tmp;
}
}
}
}
可以看看这个《图解希尔排序》