Heap’s algorithm is used to generate all permutations of n objects. The idea is to generate each permutation from the previous permutation by choosing a pair of elements to interchange, without disturbing the other n-2 elements.
Following is the illustration of generating all the permutations of n given numbers.
Input: 1 2 3 Output: 1 2 3 2 1 3 3 1 2 1 3 2 2 3 1 3 2 1
- The algorithm generates (n-1)! permutations of the first n-1 elements, adjoining the last element to each of these. This will generate all of the permutations that end with the last element.
- If n is odd, swap the first and last element and if n is even, then swap the ith element (i is the counter starting from 0) and the last element and repeat the above algorithm till i is less than n.
- In each iteration, the algorithm will produce all the permutations that end with the current last element.
1 2 3 2 1 3 3 1 2 1 3 2 2 3 1 3 2 1
This article is contributed by Rahul Agrawal .If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
- Generate all binary permutations such that there are more or equal 1's than 0's before every point in all permutations
- Generating Lyndon words of length n
- Permutations of a given string using STL
- All permutations of a string using iteration
- Check if two arrays are permutations of each other
- Problem on permutations and combinations | Set 2
- Missing Permutations in a list
- Distinct permutations of the string | Set 2
- Number of palindromic permutations | Set 1
- Check if two Linked Lists are permutations of each other
- Find the number of good permutations
- Print all permutations with repetition of characters
- Print all palindrome permutations of a string
- Sum of all numbers that can be formed with permutations of n digits
- Print k different sorted permutations of a given array