春風博客

          春天里,百花香...

          導航

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

          統計

          公告

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

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          全排列算法示例

          package com.sitinspring;

          /**
           * 全排列算法示例
          如果用P表示n個元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前綴i的排列,那么,n個元素的排列可遞歸定義為:
          如果n=1,則排列P只有一個元素i
          如果n>1,則排列P由排列(i)Pi構成(i=1、2、.、n-1)。
          根據定義,容易看出如果已經生成了k-1個元素的排列,那么,k個元素的排列可以在每個k-1個元素的排列Pi前添加元素i而生成。
          例如2個元素的排列是1  2和2   1,對3個元素而言,p1是2  3和3  2,在每個排列前加上1即生成1 2 3和1 3 2兩個新排列,
          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 閱讀(504) 評論(1)  編輯  收藏 所屬分類: 算法數據結構

          評論

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

          看了半天還是沒怎么懂
          請問大俠能不能詳細說明一下
          像我這樣的菜鳥理解起來比較困難

          先謝謝了  回復  更多評論   

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 彭阳县| 西盟| 扶沟县| 樟树市| 宜城市| 肃宁县| 潮安县| 长葛市| 介休市| 治多县| 龙门县| 霍林郭勒市| 垣曲县| 遂宁市| 西和县| 泰宁县| 龙门县| 崇州市| 天等县| 广安市| 荃湾区| 甘南县| 仪陇县| 利津县| 绥江县| 丹巴县| 自贡市| 张家界市| 洛阳市| 苍山县| 林甸县| 英吉沙县| 澜沧| 庆城县| 巩义市| 台湾省| 荥经县| 邯郸市| 岳阳县| 平罗县| 鞍山市|