5-希尔排序算法

2022-02-25 08:55:52 浏览数 (1)

思想: 增量排序,先部分有序,然后整体有序。 与插入排序的思想是一致的。 不稳定的排序算法

代码语言:javascript复制
#include <stdio.h>



void show(int *a, int n) {
    int i = 0;
    for (i = 0; i < n; i  ) {
        printf("%d", a[i]);
        if (i != n - 1) {
            printf(" ");
        }
    }
    printf("n");
}


void ShellSort(int *a, int n) {
    int d = 1;
    while (d < n / 3) {
        d = d * 3   1;
    }
    int i;
    while (d >= 1) {
        for (i = d; i <= n; i  ) {
            int x = a[i];
            int j;
            for (j = i; j >= d && a[j - d] > x; j -= d) {
                a[j] = a[j - d];
            }
            a[j] = x;
        }
        d /= 3;
    }

}


int main() {
    int a[] = {3, 1, 2, 4, 7, 0, 5, 8, 6, 9};
    int n = sizeof(a) / sizeof(int);
    show(a, n);
    ShellSort(a, n);
    show(a, n);
    return 0;
}

0 人点赞