/**
*
* @author PIPIBOY
* @编辑时间:2018年11月20日
* @功能说明:利用permutation生成全排列函数
* @version:
*/
public class Permutation{
/* [1, 2, 3]
* [1, 3, 2]
* [2, 1, 3]
* [2, 3, 1]
* [3, 2, 1]
* [3, 1, 2]
1、将当前元素与后面位置的每个元素依此交换
2、交换后取后一个位置的元素为当前元素的位置,再执行1
3、当当前位置是最后一个元素的位置则输出
*/
public static void permutation(int[] arr,int begin){
if(arr==null||begin<0 ||begin>arr.length){
return;
}
if(begin==arr.length-1){//表示只有一个字符,返回
System.out.println(Arrays.toString(arr));
}else{
for (int i = begin; i < arr.length; i++) {
int temp = arr[begin];
arr[begin] = arr[i];
arr[i] = temp;//当前位置元素与后面位置的元素依次替换
permutation(arr, begin+1);
temp = arr[begin];
arr[begin] = arr[i];
arr[i] = temp;//将位置换回来,继续做下一个排列
}
}
}
public static void main(String args[]){
permutation(new int[]{1,2,3},0);
}
}