希尔排序

Posted brainstorm-yc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序相关的知识,希望对你有一定的参考价值。

代码

#include<iostream>
#define N 9
#define ElemType int
/*希尔排序*/
void ShellSort(ElemType A[],int n) {
    int i,j,dk;
    for (dk = n / 2; dk >= 1; dk = dk / 2)
        for (i = dk + 1; i <= n; ++i)
            if (A[i]<A[i-dk])
            {
                A[0] = A[i];
                for (j = i - dk; j > 0 && A[0] < A[j]; j -= dk)
                    A[j + dk] = A[j];
                A[j + dk] = A[0];
            }
}
/*输出数组*/
void OutPrint(int A[]) {
    int i;
    for (i = 1; i < N; i++)
    {
        printf("%d  ", A[i]);
    }
}
int main() {
    int A[N] = { -1,48, 62, 35, 77, 55,14,35,98 };
    printf("排序前数组
");
    OutPrint(A);
    ShellSort(A, N-1);
    printf("
排序后数组
");
    OutPrint(A);
    system("pause");
    return 0;

}

以上是关于希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序JAVA代码

《算法》笔记 3 - 选择排序插入排序希尔排序