Solution 1 : (数据结构与算法分析 C++描述 第三版)
template<class T> void shellSort(vector<T> &v) { for(int gap = v.size() / 2; gap > 0; gap /= 2) // 这里gap > 0也可换成gap >= 1 { for(int i = gap; i < v.size(); ++i) { T tmp = v[i]; int j = i; for(; j >= gap && tmp < v[j - gap]; j -= gap) v[j] = v[j - gap]; v[j] = tmp; } } }