[数据结构] 希尔排序 C语言程序

void shellSort( int array[], int length)
{
    int i;
    int j;
    int k;
    int gap;    //gap是分组的步长
    int temp;   //希尔排序是在直接插入排序的基础上实现的,所以仍然需要哨兵
    for(gap=length/2; gap>0; gap=gap/2){
        for(i=0; i<gap; i++){
            for(j=i+gap; j<length; j=j+gap){ //单独一次的插入排序
                if(array[j] < array[j - gap]){
                    temp = array[j];    //哨兵
                    k = j - gap;
                    while(k>=0 && array[k]>temp){
                        array[k + gap] = array[k];
                        k = k - gap;
                    }
                    array[k + gap] = temp;
                }
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/OranBlog/p/8874387.html