Permutations

Generate all possible orderings of a set of elements.

Permutations Visualization

Complexity

Time Complexity: O(N!)
Space Complexity: O(N)

Pseudocode

function backtrack(path, remaining):
  if remaining is empty:
    save permutation
  for each element in remaining:
    choose element
    backtrack(path + element, remaining - element)
    undo choice