Java实现全排序
根据递归,我们针对字符串变成字符串数组result进行分析
A B C D 我们可以利用for循环把每一个字符与的一个字符进行交换
第一个字符 | 第二个字符 | 第三个字符 | 第四个字符 |
A | |||
B | |||
C | |||
D |
针对第一个字符为A进行分析第个字符为B、C、D
第二个字符 |
B |
C |
D |
针对第二个字符为B进行分析第三个字符为C、D
第三个字符 |
C |
D |
针对第三个字符为C进行分析第四个字符为D
根据以上规则形成的递归函数 : f(result, index);
根据递归函数形成递归函数核心:for(int i = index; i < result.length; i++) {//为了实现从当前字符下标与以后字符下标进行交换
{
char temp = result[i];
result[i] = result[index];
result[index] = temp;
}
f(result, index+1);
{
//回溯避免for循环字符交换后,如果不把字符串换回来,for循环接下来的相同index下标的字符形成结构就会发生变化
char temp = result[i];
result[i] = result[index];
result[index] = temp;
}
}
根据递归函数设置递归出口和边界:if(index == result.lenght){
for(int i=0; i<result.length; i++) {
System.out.print(result[i]+" ");
}
System.out.println();
return;
}
package Renew;
/**
* @author : 游斌平
*
*/
public class Test {
public static void main(String[] args) {
f("ABC".toCharArray(), 0);
}
/**
* @param string
*/
private static void f(char [] result, int index) {
// TODO Auto-generated method stub
if(index == result.length) {
for(int i=0; i<result.length; i++) {
System.out.print(result[i]+" ");
}
System.out.println();
return;
}
for(int i = index; i < result.length; i++) {
{
char temp = result[i];
result[i] = result[index];
result[index] = temp;
}
f(result, index+1);
{
char temp = result[i];
result[i] = result[index];
result[index] = temp;
}
}
}
}