希尔排序——《C programming language》

/* shellsort : sort v[0]...v[n-1] into increase order */
void shellsort(int v[], int n)
{
    int gap, i, j, temp;

    for (gap = n / 2; gap > 0; gap /= 2)
    {
        for (i = gap; i < n; i++)
        {
            for (j = i - gap; (j >= 0) && (v[j] > v[j + gap]); j -= gap)
            {
                temp = v[j];
                v[j] = v[j + gap];
                v[j + gap] = temp;
            }
        }
    }

}

    该函数包含一个三重嵌套的for循环语句:最外层的for循环控制两个被比较的元素之间的距离,从 n/2 开始,逐步进行对折,直到为0;中间的for循环用于逐个选取要比较的元素;最内层的语句用于比较各对相距gap个位置的元素,当这两个元素逆序时将它们互换过来。由于gap值最终会递减到1,因此所有元素最终会位于正确的位置上。最外层的for循环的控制变量变化规则可以适当变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值