编辑代码

#include <stdio.h>

void shell_sort(int a[],int N);

void shell_sort(int a[],int N){
    int D,i,p,temp;
    //希尔增量排序
    for(D = N/2;D > 0;D = D/2){
        //插入排序
        for(p = D;p < N;p++){
        temp = a[p];
            for(i = p;((i > D || i == D) && (a[i-D] > temp));i-=D){
                a[i] = a[i-D];
            }
            a[i] = temp;
        }
    }
    for(int i = 0;i < 10;i++){
        printf("%d ",a[i]);
    }
}

int main () {
    int a[10] = {34,51,89,16,20,63,36,98,103,12};
    printf("排序前的元素为:\n");
    for(int i = 0;i < 10;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
    printf("排序后的元素为:\n");
    shell_sort(a,10);
}