刚习得一种全排列的实现方法,特此来记录一下,此方法运用递归+交换数字实现,交换–》递归–》交换(回溯)。
package cn.shi;
import java.util.Arrays;
public class Full_Permutation {
public static void main(String[] args) {
perm(new int[] {1,2,3},0,2);
}
//递归求全排列
public static void perm(int[] array,int start,int end) {
if(start == end) {
System.out.println(Arrays.toString(array));
}else {
for(int i=start;i<=end;i++) {
swap(array,start,i);
perm(array,start+1,end);
swap(array,start,i);
}
}
}
//交换数字
public static void swap(int[] array,int i,int j) {
int t = array[i];
array[i] = array[j];
array[j] = t;
}
}
结果:
ok,record over~
游走~~