希尔排序C语言

#include <stdio.h>

void traverse(int *arr, int len){
    int i;
    for(i=0; i<len; i++){
        printf("%d、", arr[i]);
    }
    printf("\n");
}

void sheelSort(int *arr, int len){
    int i, j, t, n, temp;
    for(n=5; n>=1; n=n-2){
        for(i=0; i<n; i++){
            for(j=i+n; j<len; j=j+n){
               temp = arr[j];
                for(t=j-n; t>=0; t=t-n){
                    if(temp>arr[t]){
                        break;
                    }else{
                        arr[t+n] = arr[t];
                    }
                }
                arr[t+n] = temp;
            }
        }
    }
}

int main(){
    int arr[]={12, 3, 32, 2, 45, 2, 45, 22, 34, 67, 1};
    traverse(arr, 11);
    sheelSort(arr, 11);
    traverse(arr, 11);
    return 0;
}

原文地址:https://www.cnblogs.com/qintangtao/p/2758027.html