比较相距一定间隔的元素,间隔不断缩小

在每个步长的循环中,都是一个多次的比较,如:

  0 step step*2...

  1 step+1 step*2+1...

  ...

 即在每个步长中,不求全部排好序,只求i(0 ~ N-1)开始的每个step为步长的分元素排好序

 步长为1时,直接进行了插入排序

for (increment=N/2; increment>0; increment/=2) {
    for (i=increment; i<N; i++) {
        tmp = A[i];
        for (j=i; j>=increment&tmp<A[j-increment]; j-=increment) 
            A[j] = A[j-increment];

        A[j] = tmp;
    }
}

 

posted on 2017-07-29 22:01  啊哈咧  阅读(101)  评论(0编辑  收藏  举报