排序算法-希尔排序

/*
 * =====================================================================================
 *
 *       Filename:  shellSort.c
 *
 *    Description:  希尔排序
 *
 *        Version:  1.0
 *        Created:  2016年11月17日 14时46分39秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  guoqingshan (ackevil), wyguoqingshan@163.com
 *   Organization:  
 *
 * =====================================================================================
 */
#include <stdlib.h>
#include <stdio.h>

void shellSort(int a[],int len){
    //2的倍数为分组
    //
    int i,j,temp;
    int h=len/2;
    while(h>=1){
            for(i=h;i<len;i++){
                    for(j=i;j>=h;j-=h){
                            if(a[j]<a[j-h]){
                                temp=a[j];
                                a[j]=a[j-h];
                                a[j-h]=temp;                   
                            }else{
                                    break;
                            }
                    }
            }
            h=h/2;
    }

}
int main(){
    
        int a[10]={10,2,6,4,9,1,14,5,12,9};
        printf("排序前\n");
        int i;
        for(i=0;i<10;i++){
                printf("%d ",a[i]);
        }
        shellSort(a,10);
        printf("\n排序后\n");
        for(i=0;i<10;i++){
                printf("%d ",a[i]);
        }
        return 0;

}
posted @ 2016-12-02 17:02  时过境迁。  阅读(137)  评论(0)    收藏  举报