C语言十大排序二-----希尔排序

2018-09-06  本文已影响0人  AuglyXu

代码如下:

#include <stdio.h>

int main()
{
    int num[9] = {1,6,3,4,7,3,7,9,2};
    int len = sizeof(num) / sizeof(num[0]);
    //先计算步长,步长为数组长度的一半
    int gap = len / 2;
    //取出步长的元素进行插入排序
    do{
        for(int i = gap;i < len;i++){
            for(int j = i;j - gap >= 0;j -= gap){
                if(num[j] < num[j-gap]){
                    int temp = num[j];
                    num[j] = num[j-gap];
                    num[j-gap] = temp;
                }else{
                    break;
                }
            }
        }
        gap = gap / 2;
    }while(gap > 0);
    for(int i = 0;i < len;i++){
        printf("num[%i] = %i\n",i,num[i]);
    }
    return 0;
}

上一篇下一篇

猜你喜欢

热点阅读