希尔排序是直接插入排序算法的一种优化,其核心思想是分组进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。
稳定性:不稳定
实现:
1: void
2: shell_sort(int a[], int n)
3: {
4: int i, j, gap;
5:
6: for (gap = n/2; gap > 0; gap /= 2) {
7: for (i = gap; i < n; ++i) {
8: for (j = i - gap; j >= 0 && a[j] > a[j+gap]; j-= gap) {
9: swap(a[j], a[j + gap]);
10: }
11: }
12: }
13: }