[编程珠玑]交换相邻的不同大小的内存块[上]
2015-04-07 22:51
211 查看
核心:
X [j] = X [(j+ratdist)%size]
greatestCommonDivision(SubSize,Size)按radist步伐遍历数组元素
X [j] = X [(j+ratdist)%size]
greatestCommonDivision(SubSize,Size)按radist步伐遍历数组元素
package neu.pearls.acrobatics; public class MemoryExchange { int block[]; public MemoryExchange(int size) { block = new int[size]; } public void setBlock(int block[]) { this.block = block; } public void frontToBack(int rotdist) { for (int i = 0; i < this .getGreatestCommonDivisor(rotdist, block.length); i++) { int t = block[i]; int j = i; while (true) { int k = j + rotdist; if (k >= block.length) { k -= block.length; } if (k == i) { break; } block[j] = block[k]; j = k; } block[j] = t; } } public void frontToBack2(int rotdist) { if (rotdist > block.length || rotdist < 1) { System.out.println("Error parameter:"+rotdist); return; } for (int i = 0; i < this .getGreatestCommonDivisor(rotdist, block.length); i++) { int t = block[i]; int j = i; while (true) { int k = (j + rotdist) % block.length; if (k == i) { break; } block[j] = block[k]; j = k; } block[j] = t; } } public int getGreatestCommonDivisor(int a, int b) { while (a != b) { if (a > b) { a -= b; } else { b -= a; } } return a; } public void show() { for (int i : block) { System.out.print(i + " "); } System.out.print("\n"); } public static void main(String[] args) { MemoryExchange me = new MemoryExchange(10); int block[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; me.setBlock(block); me.show(); // me.frontToBack(5); me.frontToBack2(4); me.show(); } }
相关文章推荐
- 编程珠玑之第一章习题4: 生成不同的随机顺序的随机整数及存储与读取
- 利用汇编语言编程实现通过堆栈交换ax,bx的大小
- 编程珠玑第8章:具有n个浮点数字的向量x,在任何相邻子向量中找出最大和。
- UNIX环境高级编程 第十五章:进程间通信:是指在不同进程之间传播或交换信息
- 编程珠玑-内存交换
- 实现两数 交换的三种不同编程方法。
- 交换编程——结对编程的延伸实践
- ASP.NET 2.0 编程珠玑之五--调试已创建好的代码
- [技术讨论]关于交换编程实践的交换周期问题
- 做网页字体大小参考 网页中同字号字体的不同单位对比列表
- ·vc 中读取两个不同的excel表中的某个格中的数并比较二者大小?请各位指教
- 实现不同域(Domain)之间的数据交换(转)
- 做网页字体大小参考 网页中同字号字体的不同单位对比列表
- [技术讨论]交换编程实践与延续
- 简单小问题,数据窗口相邻行颜色不同
- PHP编程----取不同随机数
- JSP显示不同大小的图片
- 让Toolbar显示大小不同的ICONs
- [技术讨论]结对编程与交换编程的对话
- 实现不同域(Domain)之间的数据交换