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 email@example.com. 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
- Generating all divisors of a number using its prime factorization
- Permutations of a given string using STL
- Check if two arrays are permutations of each other
- All permutations of a string using iteration
- Problem on permutations and combinations | Set 2
- Distinct permutations of the string | Set 2
- Number of palindromic permutations | Set 1
- Missing Permutations in a list
- Count permutations that are first decreasing then increasing.
- Print k different sorted permutations of a given array
- Find the number of good permutations
- Print all palindrome permutations of a string
- Permutations of string such that no two vowels are adjacent