Shell’s Sort

Posted on 2016-03-26 10:48  徐岩  阅读(175)  评论(0)    收藏  举报

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;
        }
    }
}