輸出字符串的全部排列組合狀況

先記錄代碼,是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);  
    }  
}
相關文章
相關標籤/搜索