希尔排序(C语言)
#include<stdio.h>
void Shell_Sort(int a[], int n) { //先追求部分有序,再追求整体有序
int i, j, d;
for (d = n / 2; d >= 1; d /= 2) {
for(i=d+1;i<=n;i++) //控制每个子表都比较到
if (a[i] < a[i - d]) {
a[0] = a[i];
for (j = i - d; a[j] > a[0]&&j>0; j -= d) //哨兵在这里无法作为越界的判据:j>0指示了子表中还有无需要处理的元素
a[j + d] = a[j];
a[j + d] = a[0];
}
}
}