算法思路
使用递归,通过不断交换数组中的元素来生成不同的排列:
- 从索引 s 开始,逐个将索引 s 和之后的索引 i 进行交换,形成新的排列。
- 递归地对剩余的元素进行相同操作,即固定下一个位置的元素。
- 当 s 达到数组的末尾时,即 s == len(arr),表示已经生成了一个完整的排列,将其打印出来。
- 重复以上步骤,直到生成所有可能的排列。
这个算法通过递归和元素交换的方式,不断生成新的排列,直到生成了所有可能的排列为止。
def getTotalSort(arr, s):
if s != len(arr):
for i in range(s, len(arr)):
arr[s], arr[i] = arr[i], arr[s]
getTotalSort(arr, s + 1)
arr[s], arr[i] = arr[i], arr[s]
else:
print(arr)
arr = [1, 2, 3, 4]
getTotalSort(arr, 0)
Comments NOTHING