标准库算法实现
数组篇
STL::rotate
杂技算法
void rotate(vector<int>& vec, int bias){
int len = vec.size();
int start = 0, cnt = 0;
for (int i = start; i < bias; i++){
int tmp = vec[i];
int lo = i;
do {
int next = lo + bias;
if (next % len == start){
vec[lo % len] = tmp; cnt++;
if (cnt == len) return;
break;
}
vec[lo % len] = vec[next % len]; cnt++;
if (cnt == len) return;
lo = next;
} while (1);
}
} 数学魔法
这个式子还可以类比推广到多元的情形。
sort

最后更新于
这有帮助吗?