日期:2014-05-20  浏览次数:20681 次

这是一个全排序的算法,大神帮我解释一下流程吧
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,交换一次,再恢复一次,不就恢复到初始顺序了?