Java実装文字列全配列アルゴリズム
19915 ワード
Java実装文字列全配列アルゴリズム
説明
本方法のコードはネット上の資料を参考にして、本文は方法の運行結果だけを出力してコードを分析する.[参照コード]
コードブロック
全配列を実現するjavaメソッド
メソッド実行結果
本手法の実行結果から,この手法をすぐに理解できる.特に最後のステップは交換の役割を回復します.
1回目の全配列プロセスで発生した詳細結果:
2回目の全配列プロセスで発生した詳細な結果:
3回目の全配列プロセスで発生した詳細な結果:
目次 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
目次