标准库算法实现

数组篇

STL::rotate

  1. 杂技算法

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); 
	} 
} 
  1. 数学魔法

(a1b1)1==ba(a^{-1}b^{-1})^{-1} == ba 这个式子还可以类比推广到多元的情形。

sort

最后更新于

这有帮助吗?