思路:利用递归,假设对数组A{1,2,3}进行全排列,第一步:分别取出三个数后对剩下的数进行全排列,即1{2,3}+2{1,3}+3{1,2};然后重复第一步操作,直到只剩下一个数(即前面的数都已排列)时输出。
public class Main {
static int sum=0;
public static void main(String[] args) {
int []A=new int[] {1,2,3};
prem(A,0,2);
//数量
System.out.println(sum);
}
//全排列函数
public static void prem(int[]A,int p,int q) {
if (p==q) {
sum=sum+1;
printArry(A, q+1);
} else {
for (int i = p; i <= q; i++) {
swap(A,p,i);
prem(A,p+1,q);
swap(A,p,i);
}
}
}
//交换函数
public static void swap(int[]A,int i,int j) {
int temp=A[i];
A[i]=A[j];
A[j]=temp;
}
//打印数组函数
public static void printArry(int[]A,int i) {
for (int j = 0; j < i; j++) {
System.out.print(A[j]);
}
System.out.println();
}
}