九大排序——希尔排序代码实现 #include <stdio.h> #include <stdlib.h> /** * @description:一次增量为h的排序 * @param * arr:进行增量h的原始序列,数组名 * n:原始序列的元素个数 * h:增量(步长) * @return void */ void h_sorting(int a[], int n, int h) { int i, j; int x; for (i = h; i < n; i++) { x = a[i]; for (j = i - h; j >= 0 && a[j] > x; j = j - h) { a[j + h] = a[j]; } a[j + h] = x; } } //对数组arr进行一个希尔排序 void shell_sort(int a[], int n) { int i; //增量序列 int h[4] = {8, 4, 2, 1}; for (i = 0; i < 4; i++) { h_sorting(a, n, h[i]); } } #define N 10 int main(void) { int i; int a[N]; for (i = 0; i < N; i++) { scanf("%d", &a[i]); } shell_sort(a, N); for (i = 0; i < N; i++) { printf("%d ", a[i]); } return 0; }