首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

这是一个全排序的算法,大神帮小弟我解释一下流程吧

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

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

热点排行