数组左旋转k位 —— C++标准算法库中最悲剧的函数:rotate
要将一个数组的所有元素向左旋转k位,通常有三种算法:
算法1(分组交换):
若a长度大于b,将ab分成a0a1b,交换a0和b,得ba1a0,只需再交换a1 和a0。
若a长度小于b,将ab分成ab0b1,交换a和b0,得b0ab1,只需再交换a 和b1。
不断将数组划分和交换,直到不能再划分为止。分组过程与求最大公约数很相似。
读写内存各 n到2*n次
&
http://www.cyqdata.cn/cnblogs/article-detail-38379