《编程珠玑》第二章-循环移位
来源:互联网 发布:263云通信企业版mac 编辑:程序博客网 时间:2024/05/18 17:44
问题:将一个n维向量向左循环移位m位。如向量0,1,2,3,4,5,6,7,8,9向左循环移位3位,结果是3,4,5,6,7,8,9,0,1,2。
方法1:每次循环移位1位,执行m次。辅助空间1,时间复杂度O(n*m)
方法2:用m维的辅助空间暂存前m个元素,对剩下的n-m个元素进行移位,最后将m个元素移动向量末尾。辅助空间m,时间复杂度O(n)。
方法3:(杂技方法)先a[0]-->temp,然后a[i]-->a[0],a[2i]-->a[i],直到遇到a[0],将temp-->刚才移动的最后一个位置。如
果没有移动完则a[i]-->temp,然后a[1+i]-->a[1],a[1+2i]-->a[1+i],循环,直到全部移动。辅助空间O(1),时间复杂度O(n).
方法4:(求逆方法)利用了 (b,a)=(arbr)r,辅助空间1,时间复杂度O(n). 还可以扩展为(c,b,a)=(ar,br,cr)r噢~
方法5:(分块方法)对于向量(a,b),其中a是m维的,b是n-m维,将b分成两部分,b=(b1,b2),其中b2同a也是m维的,首先交换a和b2的位置。然后对(b2,b1)部分再循环进行上述操作。m>n-m时调换位置,继续。辅助空间O(1),时间复杂度O(n).
效率:分块>求逆>杂技
- 《编程珠玑》第二章-循环移位
- 旋转字符串;编程珠玑第二章;rotate a one-dimensional vector;循环移位数组;编程之美
- 编程珠玑第二章
- 编程珠玑第二章
- 编程珠玑第二章
- 编程珠玑第二章
- 编程珠玑 第二章
- 字符串循环移位 - 编程珠玑的一道题
- 编程珠机 第二章 字符串循环移位
- 编程珠玑 第二章 算法
- 编程珠玑第二章习题
- 编程珠玑第二章总结:
- 编程珠玑之第二章
- 字符串循环左移——编程珠玑第二章B
- 《编程珠玑》 第二章 算法 习题
- 编程珠玑第二章变位词1
- 编程珠玑第二章习题2
- 编程珠玑-第二章旋转算法篇
- GA--共享机制
- (PS)賭博黙示録カイジ汉化笔记(五)(完)
- 如何检测设备变动信息
- 变量的内存分配:内存对齐
- jquery做的3D相册
- 《编程珠玑》第二章-循环移位
- DOM insertBefore 使用遇到的问题,记录下
- 批处理命令大全
- 用Environ函数获取环境变量时Win7与WinXP的异同
- 实验: 用访问站点首页面的方法来进行系统较时
- HttpClient 4使用方法的几个例子
- PhotoShop效果的数学公式
- 走马观花移山之道
- LoadLibrary