配列の順列は、各組み合わせが一意であることを保証しながら、可能なすべての組み合わせを生成することで実現できます。この概念をさらに詳しく調べるために、指定された配列を考えてみましょう。
int[] a = {3, 4, 6, 2, 1};
目標は、この配列のすべての個別の順列をリストすることです。疑似コード アルゴリズムは次のとおりです。
for (int i = 0; i < a.length; i++) { // Perform actions for each element of the array for (int j = i + 1; j < a.length; j++) { // Swap elements at indices i and j to generate a permutation int temp = a[i]; a[i] = a[j]; a[j] = temp; // Check if the current permutation has already been generated if (!hasBeenGenerated(a)) { // If the permutation is new, add it to the list of permutations addPermutationToList(a); } // Swap the elements back to restore the original array temp = a[i]; a[i] = a[j]; a[j] = temp; } }
このアルゴリズムでは、配列の各要素 (インデックス i で表される) を反復処理し、それを他のすべての要素 (インデックス j で表される) と比較します。要素が以前に交換されていない場合 (hasBeenGenerated() チェックによって示される)、要素を交換することによって新しい順列を作成し、それをリストに追加します。次に、元の配列を維持するために要素を元に戻します。考えられる要素の組み合わせをすべて考慮することで、包括的な順列リストを生成します。
以上が整数配列の一意の順列をすべて生成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。