このアルゴリズムがどのように機能するかを理解したい。指定された配列のすべての可能な順列を出力するメソッド permute() を持つクラス Permute があります。でやってみました{1, 2, 3}
。if (k == arr.size() -1)
デバッガで確認したところk == 1
、このif文の仕組みがわかりませんでしarr.size() == 3
たk == 2 and arr.size() == 3
。
public class Permute
{
static void permute(java.util.List<Integer> arr, int k){
for(int i = k; i < arr.size(); i++){
java.util.Collections.swap(arr, i, k);
permute(arr, k+1);
java.util.Collections.swap(arr, k, i);
}
if (k == arr.size() -1){
System.out.println(java.util.Arrays.toString(arr.toArray()));
}
}
public static void main(String[] args){
Permute.permute(java.util.Arrays.asList(1,2,3), 0);
}
}