【算法】数组全排列

7 次阅读 预计阅读时间: 1 分钟


n

算法思路

nnnn

使用递归,通过不断交换数组中的元素来生成不同的排列:

nnnn
    n
  1. 从索引 s 开始,逐个将索引 s 和之后的索引 i 进行交换,形成新的排列。
  2. nnnn
  3. 递归地对剩余的元素进行相同操作,即固定下一个位置的元素。
  4. nnnn
  5. 当 s 达到数组的末尾时,即 s == len(arr),表示已经生成了一个完整的排列,将其打印出来。
  6. nnnn
  7. 重复以上步骤,直到生成所有可能的排列。
  8. n
nnnn

这个算法通过递归和元素交换的方式,不断生成新的排列,直到生成了所有可能的排列为止。

nnnn
def getTotalSort(arr, s):n    if s != len(arr):n        for i in range(s, len(arr)):n            arr[s], arr[i] = arr[i], arr[s]n            getTotalSort(arr, s + 1)n            arr[s], arr[i] = arr[i], arr[s]n    else:n        print(arr)nnarr = [1, 2, 3, 4]ngetTotalSort(arr, 0)
n
最后更新于 2024-03-12