全排列问题的JAVA代码

来源:互联网 发布:windows Api编程过程 编辑:程序博客网 时间:2024/05/25 08:13

全排列问题可以促成实现很多问题,比如8皇后问题等

递归实现全排列思想:以字符数组为例,第一个字符和后面每一个字符交换都可以作为全排列的一种,不妨让第一个字符和每个字符交换一次,但是这仅仅完成了第一步,以第二个字符出发和第一个字符出发原理一样,所以考虑递归解决递归过程就是这种交换的过程

java代码实现如下:

public class Test3 {
public static void main(String[] args){  
char[] charArray= {'a','b','c','\0'};
Test3 test3 = new Test3();
test3.permutation(charArray,0);

}
public void permutation(char[] string ,int beginStr) {
if(string[beginStr] == '\0'){
System.out.println(string);
}else{
for(int i = beginStr; string[i]!='\0';i++){
char temp = string[i];
string[i] = string[beginStr];
string[beginStr] = temp;
permutation(string,beginStr+1);
temp = string[i];
string[i] = string[beginStr];
string[beginStr] = temp;
}
}
}
}

程序运行结果:

abc acb bac bca cba cab

debug运行过程有助于理解为什么是这样的输出顺序,递归本质是栈机制,运行入栈出栈过程繁琐,而且很多步都是浪费的

1 0