本文实例讲述了java基于递归解决全排列问题算法。分享给大家供大家参考,具体如下:
排列问题
设r={r1,r2,...,rn}是要进行排列的n个元素,ri=r-{ri}。集合x中元素的全排列记为perm(x)。(ri)perm(x)表示在全排列perm(x)的每一个排列前加上前缀ri得到的排列。r的全排列可归纳如下:
当n=1时,perm(r)=(r),其中r是集合中唯一的元素;
当n>1时,perm(r)由(r1)perm(r1),(r2)perm(r2),(r3)perm(r3)。。。。(rn)perm(rn)构成。
public class allsort {
public static void perm(int[] list, int k, int m) {
if( k == m) {
for (int i = 0; i <=m; i++) {
system.out.print(list[i]);
}
system.out.println();
}
else{
for(int i = k; i <= m; i++) {
swap(list,k,i);
perm(list, k+1 , m);
swap(list,k,i);
}
}
}
public static void swap(int[] list, int a, int b) {
in