希尔排序 C语言版

来源:互联网 发布:电脑装机软件大全 编辑:程序博客网 时间:2024/06/10 05:56
#include <stdio.h>
void shellInset(int a[],int n,int bk);
void shellsort(int a[],int n);
int main(){
    int i,n,a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++){
    scanf("%d",&a[i]);
    }
    shellsort(a,n);
    for(i=0;i<n;i++){
    printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}


void shellsort(int a[],int n){
    int bk;
    bk=n/2;
    while(bk>=1){
    shellInset(a,n,bk);
    bk=bk/2;
    }
}

void shellInset(int a[],int n,int bk){
    int i,j,x;
    for(i=bk;i<n;i++){
        if(a[i-bk]>a[i]){
          j=i-bk;
          x=a[i];
          a[i]=a[i-bk];
          while(x<a[j]){
               a[j+bk]=a[j];
               j-=bk;
          }
          a[j+bk]=x;
        }
    }
}
0 0