定义:
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
公式:全排列数f(n)=n!(定义0!=1)
例如:求1、2、3、4、5、6、7、8、9的全排列
思路:
- 将开始的九个数中的第一个数逐个与所有数交换得到
1 2 3 4 5 6 7 8 9
2 1 3 4 5 6 7 8 9
3 2 1 4 5 6 7 8 9
4 2 3 1 5 6 7 8 9
5 2 3 4 1 6 7 8 9
6 2 3 4 5 1 7 8 9
7 2 3 4 5 6 1 8 9
8 2 3 4 5 6 7 1 9
9 2 3 4 5 6 7 8 1 - 忽略排好的第一列,对每一行剩下的8个数再进行相同操作,例如第一行,得到:
2 3 4 5 6 7 8 9
3 2 4 5 6 7 8 9
4 3 2 5 6 7 8 9
5 3 4 2 6 7 8 9
6 3 4 5 2 7 8 9
7 3 4 5 6 2 8 9
8 3 4 5 6 7 2 9
9 3 4 5 6 7 8 2 - 忽略排好的第一列,对每一行剩下的7个数再进行相同操作…
- 当第一个数和最后一个数重合时操作结束。
代码
import java.util.Arrays;
public class QuanPaiLie{
public static void perm(int[] a,int begin,int end){
if(begin==end) {
System.out.println(Arrays.toString(a));
}else {
for(int i=begin;i<=end;i++) {
int temp=a[begin];
a[begin]=a[i];
a[i]=temp;
perm(a,begin+1,end);
temp=a[begin];
a[begin]=a[i];
a[i]=temp;
}
}
}
public static void main(String args[]){
int[] in={1,2,3,4,5,6,7,8,9};
perm(in,0,in.length-1);
}
}
来源:CSDN
作者:David言
链接:https://blog.csdn.net/qq_44713502/article/details/103481246