class Play4 {
public static void main(String[] args) {
int[] arr = {1,4,7,9,5,3,2}; //给定一个数组
int[] x = new int[arr.length]; //定义一个数组,用于接收所有的排列
for (int i =0;i<arr.length ;i++ ) { //启动一个数字的遍历,并调用递归方法
x[0]= arr[i];
getAll(arr, x, 0);
}
}
public static void getAll(int[]arr, int[] y , int j){ //一个递归方法,,
int i =0; int[]a =new int[arr.length-1];
for (i =0;i<arr.length ;i++ ) { //找出在给定数组里面的一个元素跟第一层循环中得到的数字相等的数字,,记录这个数字的角标
if (y[j]==arr[i]) {
break;
}
}
for (int k =0;k<arr.length-1 ;k++ ) { //得出一个数组,这个数组的长度比输入的数组小1, 只是去掉了已经取出的那个数字
if (k<i) {
a[k]=arr[k];
}else {
a[k]=arr[k+1];
}
}
for (int s =0;s<a.length ;s++ ) { //递归...
y[j+1] =a[s];
if (j==arr.length-2) {
return;
}
getAll(a, y, j+1);
for (int t =0;t<y.length ; t++) { //输出排列
System.out.print(y[t]);
}
System.out.println();
}
}
}