希尔排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


希尔排序:
其实就是分好组(通过步长)然后对每组进行插入排序
这里步长选择都是从n/2开始,每次再减半,直到最后为1。
*/


void (int a[], int n)
{
int i, j, gap;

for (gap = n / 2; gap > 0; gap /= 2)
for (i = gap; i < n; i++)
for (j = i - gap; j >= 0 && a[j] > a[j + gap]; j -= gap)
Swap(a[j], a[j + gap]);
}