转载http://blog.youkuaiyun.com/cjjky/article/details/7397226
全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。
当m=n时所有的排列情况叫全排列。
该算法源码如下:
- <spanstyle="font-size:16px;">packagecom.andyidea.algorithms;
- /**
- *全排列算法
- *@authorAndy.Chen
- *
- */
- publicclassPermutationSorter<T>{
- /**
- *全排列输出
- *@paramarray要输出的字符数组
- *@paramfrom输出字符数组的起始位置
- *@paramlen输出字符数组的长度
- */
- publicfinalvoidpermutation(T[]array,intfrom,intlen){
- inti;
- if(from<len-1){
- permutation(array,from+1,len);
- for(i=from+1;i<len;i++){
- swap(array,from,i);
- permutation(array,from+1,len);
- swap(array,from,i);
- }
- }else{
- printResult(array);
- }
- }
- /**
- *交换算法
- *@paramarray
- *@paramfrom
- *@paramto
- */
- publicfinalvoidswap(T[]array,intfrom,intto){
- Ttmp=array[from];
- array[from]=array[to];
- array[to]=tmp;
- }
- /**
- *打印输出全排列结果
- *@paramarray
- */
- publicvoidprintResult(T[]array){
- for(intj=0;j<array.length;j++){
- System.out.print(array[j]);
- }
- System.out.println();
- }
- }</span>