A permutation, also called an “arrangement number” or “order”, is a rearrangement of the elements of an ordered list S into a one-to-one correspondence with S itself. A string of length n has n! permutation ( Source: Mathword )
Below are the permutations of string ABC.
ABC ACB BAC BCA CBA CAB
How to print all permutations iteratively?
A simple solution to use permutations of n-1 elements to generate permutations of n elements.
For example let us see how to generate permutations of size 3 using permutations of size 2.
Permutations of two elements are 1 2 and 2 1.
Permutations of three elements can be obtained by inserting 3 at different positions in all permutations of size 2.
Inserting 3 in different positions of 1 2 leads to 1 2 3, 1 3 2 and 3 1 2.
Inserting 3 in different positions of 2 1 leads to 2 1 3, 2 3 1 and 3 2 1.
To generate permutations of size four, we consider all above six permutations of size three and insert 4 at different positions in every permutation.
An efficient solution is to use Johnson and Trotter algorithm to generate all permutations iteratively.