输出字符串的全部排列组合状况

先记录代码,是copy的,往后分析。

import org.junit.Test;  
  
public class AllSort {  
  
    public void permutation(char[] buf, int start, int end) {  
        if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出便可  
            for (int i = 0; i <= end; i++) {  
                System.out.print(buf[i]);  
            }  
            System.out.println();  
        } else {// 多个字母全排列  
            for (int i = start; i <= end; i++) {  
                char temp = buf[start];// 交换数组第一个元素与后续的元素  
                buf[start] = buf[i];  
                buf[i] = temp;  
  
                permutation(buf, start + 1, end);// 后续元素递归全排列  
  
                temp = buf[start];// 将交换后的数组还原  
                buf[start] = buf[i];  
                buf[i] = temp;  
            }  
        }  
    }  
  
    @Test  
    public void testPermutation() throws Exception {  
        char[] buf = new char[] { 'a', 'b', 'c' };  
        permutation(buf, 0, 2);  
    }  
}
相关文章
相关标签/搜索