void ShellSort ( vector &v ) { int P = 4; int m[] = { 5,3,2,1}; for ( int idx = 0; idx < P; idx++ ) { int len = m[idx]; for ( int sec = 1; sec < ( v.size()/len + ( v.size()%len != 0 ) ); sec++ ) { int end = ( sec*len + len ) < v.size() ? ( sec*len + len ) : v.size(); for ( int i = sec*len; i < end; i++ ) { for ( int j = ( sec - 1 ) * len; j < ( sec - 1 ) * len + len; j++ ) { if ( v[i] < v[j] ) { int t = v[i]; v[i] = v[j]; v[j] = t; } } } } }}