【发布时间】:2016-12-29 21:14:37
【问题描述】:
我一直在尝试实现此线程Algorithm to apply permutation in constant memory space 中讨论的内容。但是,我可能无法正确理解问题解决方案,或者我的代码有一些我无法检测和修复的错误。蚂蚁的帮助表示赞赏。
public class ArrayPermute{
public static void main(String[] args){
char[] arr = {'a','b','c','d'};
int[] p = {2,0,1,3};
for(int i=0; i<arr.length; i++){
int tmp = i;
while(p[tmp] >= 0){
char t = arr[p[tmp]];//d
arr[p[tmp]] = arr[tmp];
arr[tmp]=t;
int _tmp = p[tmp];
p[tmp] = -1;
tmp = _tmp;
print(arr);
print(p);
}
}
for(char i: arr){
System.out.print(i + " ");
}
}
public static void print(char[] arr){
for(char c: arr){
System.out.print(c + " " );
}
System.out.println();
}
public static void print(int[] arr){
for(int c: arr){
System.out.print(c + " " );
}
System.out.println();
}
}
【问题讨论】:
-
您的问题到底是什么?你得到不正确的输出吗?如果是,你会得到什么,你期望得到什么?
-
是的,输出错误。
标签: arrays algorithm permutation best-in-place in-place