您的位置:首页 > 运维架构 > Shell

Shell Sort(希尔排序)

2016-11-08 14:15 387 查看
#include <stdio.h>  

#include <stdlib.h>  

#define maxsize 10  

typedef struct{  

    int a[maxsize+1];  

    int length;  

}sqlist;  

void shellsort(sqlist*l){  

    int i,j;  

    int increment=l->length;   

      

    do{  

        increment=increment/3+1;  

    for(i=increment+1;i<=l->length;i++){  

        if(l->a[i]<l->a[i-increment]){  

            l->a[0]=l->a[i];  

            for(j=i-increment;j>0 && l->a[j]>l->a[0];j -= increment) 

            {  

                l->a[j+increment]=l->a[j];//红色字体作用是交换a[i]和a[i-increment]的值  

            }  

            l->a[j+increment]=l->a[0];   

        }  

    }  

    }  

    while(increment>1); //(当increment<=1时结束循环)

  

      

}   

int main(){  

    int i;

  sqlist *l;

    l=(sqlist*)malloc(sizeof(sqlist));

    scanf("%d",&l->length);  

    for(i=1;i<=l->length;i++){  

        scanf("%d",&l->a[i]);  

    }   

    shellsort(l);  

    for(i=1;i<=l->length;i++){  

        printf("%d\n",l->a[i]);  

    }  

    return 0;  

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