希尔排序

2018-09-04  本文已影响0人  Jfeng666

定义

是一种分组直接排序

详细步骤

1、希尔增量d=n/2
2、将配许序列分成D个组,在各组内进行直接插入排序
3、递减d=d/2,重复2步骤,直到d=1;

P.S.

每个组的两个元素之间位置相隔d
在每一组里面进行直接插入排序

希尔排序算法

void ShellSort(RecType R[], int n)
{
    int i, j, d;
    RecType tmp;
    d=n/2;  //增量置初值
    while (d>0)
    {
        for (i=d;i<n;i++)   //对相隔d位置的元素组*直接插入排序*
        {
            tmp=R[i];
            j=i-d;
            while (j>=0 && tmp.key<R[j].key)
            {
                R[j+d]=R[j];
                j=j-d;
            }
            R[j+d]=tmp;
        }
        d=d/2;  //减少增量
    }
}
上一篇下一篇

猜你喜欢

热点阅读