Java实现全排序

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                                                                     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                 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;
            }
        }
    }
}
 

你可能感兴趣的:(算法)