春風(fēng)博客

          春天里,百花香...

          導(dǎo)航

          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統(tǒng)計(jì)

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(lèi)(224)

          隨筆檔案(126)

          個(gè)人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          全排列算法示例

          package com.sitinspring;

          /**
           * 全排列算法示例
          如果用P表示n個(gè)元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前綴i的排列,那么,n個(gè)元素的排列可遞歸定義為:
          如果n=1,則排列P只有一個(gè)元素i
          如果n>1,則排列P由排列(i)Pi構(gòu)成(i=1、2、.、n-1)。
          根據(jù)定義,容易看出如果已經(jīng)生成了k-1個(gè)元素的排列,那么,k個(gè)元素的排列可以在每個(gè)k-1個(gè)元素的排列Pi前添加元素i而生成。
          例如2個(gè)元素的排列是1  2和2   1,對(duì)3個(gè)元素而言,p1是2  3和3  2,在每個(gè)排列前加上1即生成1 2 3和1 3 2兩個(gè)新排列,
          p2和p3則是1  3、3  1和1  2、2  1,
          按同樣方法可生成新排列2 1 3、2 3 1和3 1 2、3 2 1。
           * 
          @author: sitinspring(junglesong@gmail.com)
           * @date: 2008-3-25
           
          */
          public class Permutation{
              
          public static void main(String[] args){
                  String[] arr
          ={"1","2","3"};
                  Integer[] arr02
          ={4,5,6,7};
                  permutation(arr02,
          0,arr02.length);
              }
              
              
          public static void permutation(Object[] arr,int start,int end){
                  
          if(start<end+1){
                      permutation(arr,start
          +1,end);
                      
                      
          for(int i=start+1;i<end;i++){
                          Object temp;
                          
                          temp
          =arr[start];
                          arr[start]
          =arr[i];
                          arr[i]
          =temp;
                          
                          permutation(arr,start
          +1,end);
                          
                          temp
          =arr[i];
                          arr[i]
          =arr[start];
                          arr[start]
          =temp;
                      }
                  }
                  
          else{
                      
          for(int i=0;i<end;i++){
                          System.out.print(arr[i]);
                      }
                      System.out.print(
          "\n");
                  }
              }
          }

          posted on 2008-03-25 05:46 sitinspring 閱讀(505) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): 算法數(shù)據(jù)結(jié)構(gòu)

          評(píng)論

          # re: 全排列算法示例 2008-04-25 14:47 binz

          看了半天還是沒(méi)怎么懂
          請(qǐng)問(wèn)大俠能不能詳細(xì)說(shuō)明一下
          像我這樣的菜鳥(niǎo)理解起來(lái)比較困難

          先謝謝了  回復(fù)  更多評(píng)論   

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 静海县| 赤峰市| 靖江市| 绿春县| 临潭县| 化州市| 东港市| 沐川县| 阿巴嘎旗| 河池市| 尉犁县| SHOW| 桐柏县| 临夏县| 临夏市| 塘沽区| 五河县| 屏东市| 莎车县| 武邑县| 洪泽县| 兴国县| 绩溪县| 建宁县| 德清县| 二连浩特市| 九江县| 东乌珠穆沁旗| 灌南县| 合作市| 桃江县| 辽阳市| 息烽县| 保康县| 成安县| 金乡县| 和政县| 凌源市| 荆门市| 嘉禾县| 云阳县|