概念:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
公式:全排列数f(n)=n!(定义0!=1)
package recursive;
public class Permutation {
public static int[] text = {1,2,3,4,5};
public static int count=0;
public static void permutation(int a[], int m, int n) {//递归调用,每次这交换两个元素,如此反复
int i;
int t;
if (m < n - 1) {
permutation(a, m + 1, n);
for (i = m + 1; i < n; i++) {
t = a[m]; //每次交换有序数组的后两个元素
a[m] = a[i];
a[i] = t;
permutation(a, m + 1, n); //将交换的元素换回原来的位置,递归至原始状态
t = a[m];
a[m] = a[i];
a[i] = t;
}
} else {
printResult(a); //交换完成后输入重新排列后的结果
}
}
public static void printResult(int[] text) {
for (int i = 0; i < text.length; i++) {
System.out.print(text[i]);
}
System.out.print(" ");
count=count+1;
if(count%5==0) {
System.out.println();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
permutation(text, 0, text.length);
System.exit(0);
}
}

京公网安备 11010502036488号