import java.util.Arrays;
/**
* 全排列
*/
public class Permutation {
/**
* 对数组中坐标为[l,r]的元素进行全排列
*
* @param arr
* @param l
* @param r
*/
public void permute(int[] arr, int l, int r) {
if (l >= arr.length || r >= arr.length || l > r){
System.out.println("输入参数不符合要求");
return;
}
if (l == r)
System.out.println(Arrays.toString(arr));
else {
for (int i = l; i <= r; i++) {
this.swap(arr, l, i);
this.permute(arr, l + 1, r);
this.swap(arr, l, i);
}
}
}
/**
* 交换数组中两个元素的值
*
* @param arr
* @param a
* @param b
*/
public void swap(int[] arr, int a, int b) {
System.out.println("交换前:"+Arrays.toString(arr));
if (a >= arr.length || b >= arr.length)
return;
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static void main(String[] args) {
Permutation p = new Permutation();
int[] arr = {
1, 2, 3 };
p.permute(arr, 0, 2);
}
}
结果: