比较相距一定间隔的元素,间隔不断缩小
在每个步长的循环中,都是一个多次的比较,如:
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; } }