关于希尔排序的问题,请各位专家解答!(语言-c语言)

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;
            }
        }
    }
}

可以看看这个《图解希尔排序》