陣列的排列:深入解釋
要產生陣列的排列,了解元素的排列方式至關重要。排列涉及重新排列數組元素以建立新序列。具有 n 個元素的陣列的可能排列數由 n! 給出。
遞歸演算法
產生排列的一種方法是使用遞歸方法,其中您迭代地交換元素並對剩餘的陣列元素應用排列。
public 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())); } }
這演算法首先將第一個元素與其餘每個元素交換。然後,它對其餘元素遞歸地應用相同的操作。每次遞歸呼叫後,元素都會交換回原來的位置。
非遞歸演算法
對於迭代方法,請考慮以下步驟:
示例:排列數組[3, 4, 6 , 2, 1]
遞歸算法:
非遞歸演算法:
兩種演算法的結果是相同的:產生並列印所有可能的排列。
以上是如何使用遞歸和非遞歸演算法產生數組的所有排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!