打印全排列

来源:互联网 发布:html href javascript 编辑:程序博客网 时间:2024/05/18 08:27

在《组合数学》里面全排列是一个常见的问题。

描述如下:有x1,x2,x3,...xn,共n个元素,打印出它的全排列。

如:1 , 2 , 3

有6种排列: 123, 132, 213, 231, 312, 321

 

思路: 元素的全排列,其实就是遍列全部元素组成的一个排列树,用回溯法可以得到比较好的效率,由于遍列整棵树,故时间复杂度为O(n!)

/** *  打印出list[k,m]的全排列 * @param list * @param k  beginning index * @param m  finishing index */static void getPerm(Object[] list, int k , int m){if( k == m){for(int i = 0; i <= m; i++)System.out.print(list[i]);System.out.println();}elsefor( int i = k; i <= m; i++){MyMath.swap(list, i, k);getPerm(list, k+1, m);MyMath.swap(list, i, k);}}


原创粉丝点击