全排列 java實現

本博 轉載自 https://blog.csdn.net/u013309870/article/details/68941284數組

從n個不一樣元素中任取m(m≤n)個元素,按照必定的順序排列起來,叫作從n個不一樣元素中取出m個元素的一個排列。當m=n時全部的排列狀況叫全排列。
例如:spa

1 、2 、3三個元素的全排列爲:.net

{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}。
 code

 1 public class HelloWorld {
 2     public static void main(String []args) {
 3        Permutation(new char[]{'1','2','3'},0);
 4     }
 5     
 6     
 7     public static void Permutation(char chs[],int start )
 8     {
 9         if(start==chs.length-1)
10         {
11             System.out.println(chs);
12             //若是已經到了數組的最後一個元素,前面的元素已經排好,輸出。Arrays.toString(chs);
13         }
14         for(int i=start;i<=chs.length-1;i++)
15         {
16         //把第一個元素分別與後面的元素進行交換,遞歸的調用其子數組進行排序
17                 Swap(chs,i,start);
18                 Permutation(chs,start+1);
19                 Swap(chs,i,start);
20         //子數組排序返回後要將第一個元素交換回來。  
21         //若是不交換回來會出錯,好比說第一次一、2交換,第一個位置爲2,子數組排序返回後若是不將一、2
22         //交換回來第二次交換的時候就會將二、3交換,所以必須將一、2交換使1仍是在第一個位置 
23         }
24     }
25 
26     
27      public static void Swap(char chs[],int i,int j)
28     {
29         char temp;
30         temp=chs[i];
31         chs[i]=chs[j];
32         chs[j]=temp;
33     }
34 }

 

 

運行結果blog

123
132
213
231
321
312排序

 

 

2. ch[] = {'1','2','1'}的狀況遞歸

加一個判斷解決      交換的兩個字符值相等 ,跳過get

相關文章
相關標籤/搜索