Java実装文字列全配列アルゴリズム


Java実装文字列全配列アルゴリズム
説明
本方法のコードはネット上の資料を参考にして、本文は方法の運行結果だけを出力してコードを分析する.[参照コード]
コードブロック
全配列を実現するjavaメソッド
import java.util.ArrayList;
import java.util.Collections;


/**
 * @author 
 *
 */
public class Main{

    public static void main(String[] args){

        ArrayList list = new ArrayList();
        list.add(new Integer(1));
        list.add(new Integer(2));
        list.add(new Integer(3));

        calperm(list, 0);

    }

    /**
     * @param list
     * @param n
     *          。
     *        :
     * 1、          ,                 。                 ,
     *         ,                
     * 2、        1.     
     * 2、        ,                  ,       ,           !!!      !!
     * 
     */
    public static void calperm(ArrayList list, int n){
        if(n == list.size()){
            System.out.println(list.toString());
        }else{
            for(int i=n;i"   n       ,n=" + n);
                System.out.println(list.toString()+"              .");
                Collections.swap(list, i, n);
                System.out.println(list.toString()+"           ,   i n    .  n="+n+" i="+i+" n      n   ,i   n     i   ");

                calperm(list, n+1);//           。

                System.out.println(list.toString()+"         ,        ."+"      n     ,  n="+n);
                Collections.swap(list, i, n);//       !!!!           ,              !!!!
                System.out.println(list.toString()+"         ,        ."+"      n     ,  n="+n);
            }
        }
    }
}

メソッド実行結果
本手法の実行結果から,この手法をすぐに理解できる.特に最後のステップは交換の役割を回復します.
1回目の全配列プロセスで発生した詳細結果:
   n       ,n=0
[1, 2, 3]              .
[1, 2, 3]i n    .  n=0 i=0 n      n   ,i   n     i   
   n       ,n=1
[1, 2, 3]              .
[1, 2, 3]i n    .  n=1 i=1 n      n   ,i   n     i   
   n       ,n=2
[1, 2, 3]              .
[1, 2, 3]i n    .  n=2 i=2 n      n   ,i   n     i   
[1, 2, 3]
[1, 2, 3]         ,        .      n     ,  n=2
[1, 2, 3]         ,        .      n     ,  n=2
[1, 2, 3]         ,        .      n     ,  n=1
[1, 2, 3]         ,        .      n     ,  n=1
   n       ,n=1
[1, 2, 3]              .
[1, 3, 2]i n    .  n=1 i=2 n      n   ,i   n     i   
   n       ,n=2
[1, 3, 2]              .
[1, 3, 2]i n    .  n=2 i=2 n      n   ,i   n     i   
[1, 3, 2]
[1, 3, 2]         ,        .      n     ,  n=2
[1, 3, 2]         ,        .      n     ,  n=2
[1, 3, 2]         ,        .      n     ,  n=1
[1, 2, 3]         ,        .      n     ,  n=1
[1, 2, 3]         ,        .      n     ,  n=0
[1, 2, 3]         ,        .      n     ,  n=0

2回目の全配列プロセスで発生した詳細な結果:
   n       ,n=0
[1, 2, 3]              .
[2, 1, 3]i n    .  n=0 i=1 n      n   ,i   n     i   
   n       ,n=1
[2, 1, 3]              .
[2, 1, 3]i n    .  n=1 i=1 n      n   ,i   n     i   
   n       ,n=2
[2, 1, 3]              .
[2, 1, 3]i n    .  n=2 i=2 n      n   ,i   n     i   
[2, 1, 3]
[2, 1, 3]         ,        .      n     ,  n=2
[2, 1, 3]         ,        .      n     ,  n=2
[2, 1, 3]         ,        .      n     ,  n=1
[2, 1, 3]         ,        .      n     ,  n=1
   n       ,n=1
[2, 1, 3]              .
[2, 3, 1]i n    .  n=1 i=2 n      n   ,i   n     i   
   n       ,n=2
[2, 3, 1]              .
[2, 3, 1]i n    .  n=2 i=2 n      n   ,i   n     i   
[2, 3, 1]
[2, 3, 1]         ,        .      n     ,  n=2
[2, 3, 1]         ,        .      n     ,  n=2
[2, 3, 1]         ,        .      n     ,  n=1
[2, 1, 3]         ,        .      n     ,  n=1
[2, 1, 3]         ,        .      n     ,  n=0
[1, 2, 3]         ,        .      n     ,  n=0

3回目の全配列プロセスで発生した詳細な結果:
   n       ,n=0
[1, 2, 3]              .
[3, 2, 1]i n    .  n=0 i=2 n      n   ,i   n     i   
   n       ,n=1
[3, 2, 1]              .
[3, 2, 1]i n    .  n=1 i=1 n      n   ,i   n     i   
   n       ,n=2
[3, 2, 1]              .
[3, 2, 1]i n    .  n=2 i=2 n      n   ,i   n     i   
[3, 2, 1]
[3, 2, 1]         ,        .      n     ,  n=2
[3, 2, 1]         ,        .      n     ,  n=2
[3, 2, 1]         ,        .      n     ,  n=1
[3, 2, 1]         ,        .      n     ,  n=1
   n       ,n=1
[3, 2, 1]              .
[3, 1, 2]i n    .  n=1 i=2 n      n   ,i   n     i   
   n       ,n=2
[3, 1, 2]              .
[3, 1, 2]i n    .  n=2 i=2 n      n   ,i   n     i   
[3, 1, 2]
[3, 1, 2]         ,        .      n     ,  n=2
[3, 1, 2]         ,        .      n     ,  n=2
[3, 1, 2]         ,        .      n     ,  n=1
[3, 2, 1]         ,        .      n     ,  n=1
[3, 2, 1]         ,        .      n     ,  n=0
[1, 2, 3]         ,        .      n     ,  n=0

目次
  • Java実装文字列全配列アルゴリズム
  • 説明
  • コードブロック
  • メソッド実行結果
  • ディレクトリ