Shell排序

void ShellSort ( vector<int> &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;
                    }
                }
            }
        }
    }
}
posted @ 2012-11-29 17:23  tsubasa_wp  阅读(135)  评论(0编辑  收藏  举报