什麼是全排序?java
所謂的數組全排序也就是將數組中的元素的全部排列組合所有列出來數組
好比 數組 char[] data = {'a', 'b', 'c', 'd'}; 那麼就須要將 abcd, acbd, adcd ..... 全部的排列組合所有列出code
思路—找規律排序
數組全排序的實現方式不少,在這裏我採用的是遞歸的方式,仍是上面的例子:abcd遞歸
(1) 首先將首字母分別與後面的n(n>=1)個字母交換class
abcd bacd cbad dbcasort
(1)將交換後的字符數組第n位和n+1位進行交換並打印(遞歸實現)static
實現代碼db
private static void sort(char[] data) { for (int i=0; i<data.length; i++) { //將首字母與其餘字母進行交換 change(data, 0, i); print(data, 1); } } private static void print(char[] data, int index) { //已經到頭了 if (index == data.length) { return; } System.out.println(Arrays.toString(data)); //將第n位和n+1位進行交換 change(data, index, index + 1); print(data, index + 1); } private static void change(char[] data, int i, int j) { char b = data[0]; data[0] = data[i]; data[i] = b; } public static void main(String[] args) { char[] data = {'a', 'b', 'c', 'd'}; sort(data); }