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; } } } } }
[数据结构] 希尔排序 C语言程序
猜你喜欢
转载自www.cnblogs.com/OranBlog/p/8874387.html
今日推荐
周排行