您的位置:首页 > 理论基础 > 数据结构算法

希尔排序 C语言版

2016-12-03 10:04 253 查看
#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;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息