读书人

这是一个全排序的算法大神帮小弟我解

发布时间: 2013-03-28 10:20:24 作者: rapoo

这是一个全排序的算法,大神帮我解释一下流程吧
public static void confusion(char[] str,int i){

if (i >= str.length)
return;
if (i == str.length - 1) {
System.out.println(String.valueOf(str));
} else {
for (int j = i; j < str.length; j++) {
char temp = str[j];
str[j] = str[i];
str[i] = temp;

confusion(str, i + 1);

temp = str[j];
str[j] = str[i];
str[i] = temp;
}
}

} 算法 java 全排序
[解决办法]

引用:
引用:引用:引用:假设要全排序a b c
最外层for循环共循环三次
第一次处理 abc 第一层递归处理bc的全排序 以此类推
第二次处理 bac 第一层递归处理ac的全排序 以此类推
第三次处理 cba 第一层递归处理ba的全排序 以此类推
……

第一次交换使用的是调用confusion方法的初始参数str,交换一次,再恢复一次,不就恢复到初始顺序了?

读书人网 >Java相关

热点推荐