我一直在嘗試執行在此線程中討論的內容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();
}
}
您的問題究竟是什麼?你得到一個不正確的輸出?如果是的話,你會得到什麼,你期望什麼? – kraskevich
是的,輸出是錯誤的。 – wayfare