一.定义:
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。
二.算法描述:
先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够
小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提
高。
三.代码实现:
void Shell_Sort(int a[], int n)
{
int i, j, d, temp;
for(d = n / 2; d >= 1; d /= 2)
for(i = d; i <= n; i++) {
temp = a[i];
j = i;
while(j >= d && a[j - d] > temp) {
a[j] = a[j - d];
j -= d;
}
a[j] = temp;
}
}