实现步骤:
输入:n个整数的序列
1:设置变量i=0;
2:置第i个位置的元素为排头元素
3:递归求排头元素外的n-1个元素的全排列
4:将排头回归第i个位置
5:i++
6:如果i<n,则转步骤2;否则算法结束。
代码实现如下:
public class permutation {
public static void perm(int A[],int k,int n){
int i;
if(k==n){ //k表示已排好前k个元素
for(i=0;i<n;i++){
System.out.print(A[i]);
}
System.out.print("\n");
}else{
for(i=k;i<n;i++){
int temp;
temp=A[i]; //置第i个位置的元素为排头元素
A[i]=A[k];
A[k]=temp;
perm(A,k+1,n); //递归求排头元素外的n-1个元素的全排列
temp=A[i]; //将排头回归第i个位置
A[i]=A[k];
A[k]=temp;
}
}
}
public static void main(String args[]){
int n=3;
int k=0;
int A[]=new int[]{1,2,3};
perm(A,k,n);//测试,输出1,2,3的全排列
}
}