產生陣列的排列
陣列的排列包含其元素的獨特排列。對於 N 元素數組,存在 N! (N 階乘)不同的排列。本問題旨在概述產生這些排列的演算法。
演算法:
考慮以下產生陣列排列的步驟:
先將第一個🎜> 初始化:
先將第一個轉頁元素作為樞軸並將其放置在目前排列清單的第一個位置。終止:
當迴圈到達最後一個元素,目前排列清單完成。輸出它。def generate_permutations(arr): perms = [] _generate_permutations_helper(arr, 0, perms) return perms def _generate_permutations_helper(arr, start, perms): if start == len(arr) - 1: perms.append(arr.copy()) else: for i in range(start, len(arr)): arr[start], arr[i] = arr[i], arr[start] _generate_permutations_helper(arr, start + 1, perms) arr[start], arr[i] = arr[i], arr[start]
實作:
這是上述演算法的 Python實作:arr = [3, 4, 6, 2, 1] permutations = generate_permutations(arr) print(permutations) # [[3, 4, 6, 2, 1], [3, 4, 2, 6, 1], ... ]
範例用法:
注意: 此方法可以透過僅維護目前排列的開始和結束元素並僅在最後,無需將整個排列清單保留在記憶體中。以上是如何產生數組的所有排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!