劍指Offer-陣列全排列
阿新 • • 發佈:2019-01-25
1 2 3 4
第一位
- 1不動 1 -》2 3 4的全排
- 1,2置換 2-》1 3 4的全排
- 1,3置換 3-》2 1 4的全排
- 1,4置換 4-》2 3 1的全排
第二位,第三位。。依次類推
注意每次換回去要再換回來
import java.util.Arrays; //陣列全排列 Evan XU-TJU class AllSort{ public static void main(String[] args) { int array[] = {1, 2, 3,4}; allSort(array,0,array.length-1); } public static void allSort(int array[],int start,int end){ if (start>=end){ //ToDo System.out.println(Arrays.toString(array)); return; } allSort(array,start+1,end); //保持不動 for (int i = start+1; i <=end ; i++) { swap(array, start, i); //分別交換 allSort(array,start+1,end); //後面的繼續排列 swap(array,start,i); //交換再換回來 } } public static void swap(int array[],int i,int j){ int tmp = array[i]; array[i] = array[j]; array[j]=tmp; } }
[1, 2, 3, 4] [1, 2, 4, 3] [1, 3, 2, 4] [1, 3, 4, 2] [1, 4, 3, 2] [1, 4, 2, 3] [2, 1, 3, 4] [2, 1, 4, 3] [2, 3, 1, 4] [2, 3, 4, 1] [2, 4, 3, 1] [2, 4, 1, 3] [3, 2, 1, 4] [3, 2, 4, 1] [3, 1, 2, 4] [3, 1, 4, 2] [3, 4, 1, 2] [3, 4, 2, 1] [4, 2, 3, 1] [4, 2, 1, 3] [4, 3, 2, 1] [4, 3, 1, 2] [4, 1, 3, 2] [4, 1, 2, 3]
執行結果: