希尔排序
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; //减少增量
}
}