Java语言写成的简单易懂的全排列模板
m个数字全排列
public class Main {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3,4};//此数组的内容可以自行更改
sort(arr,0,arr.length);
}
public static void sort(int[] arr,int start,int end){//start和end是指数组下标
if(start==end){//如果递归到数组中最后一个数字
for(int i=0;i<arr.length;i++){//则输出
System.out.print(arr[i]+"");
}
System.out.println();
return;//确定一种之后返回,继续找下一种
}
for(int i=start;i<end;i++){
swap(arr,start,i);//交换start和i的值,形成新的排列方式
sort(arr,start+1,end);//下一次循环时换成数组的下一个数字,即start+1
swap(arr,start,i);//回溯时把位置换回来
}
}
public static void swap(int[] arr,int i,int j){//交换i和j的值
int c=arr[i];
arr[i]=arr[j];
arr[j]=c;
}
}