概念:从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); } }