void Shell(int array[] , int n){
for(int gap = n/2 ; gap > 0 ; gap /= 2){
for(int i = 0 ; i < gap ; i++ ){
for(int j = i + gap ; j < n ; j+=gap){
//利用插入排序,将每个分组中的元素放到指定的地方
int tmp = array[j ];
int k = j - gap;
while( k >=0 &&tmp < array[k] )
{
array[k+gap] = array[k];
k = k - gap;
}
array[k+gap] = tmp;
}
}
}
}
int main(){
int n[10] = {9 , 8, 7, 6, 5, 4, 3, 2, 1};
Shell(n , 10);
cout<<endl;
}
http://www.cnblogs.com/skywang12345/p/3597597.html 附上图解链接