#define_CRT_SECURE_NO_WARNINGS1#include<iostream>#include<vector>usingnamespace std;voidShell_sort(int*a,int n){if(n <2)return;int t,j;int d=n/2;//d is increment,this set d/=2. //d may also be d/=3 or 5 3 1...while(d){for(int k =0; k < d; k++)for(int i = d+k; i < n; i += d){
t = a[i];for(j = i - d; j >=0&& t < a[j]; j -= d)
a[j + d]= a[j];
a[j + d]= t;//j多减了d,+d恢复}
d >>=1;}return;}intmain(){int a[]={44,3,38,5,47,15,36,26,27,2,46,4,19,50,48};Shell_sort(a,sizeof(a)/sizeof(a[0]));for(constauto& e : a)
cout << e <<" ";
cout << endl;return0;}