實現步驟:
輸入: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的全排列
}
}