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]
运行结果: