
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Alexander Bogomolny's Unordered Permutation Algorithm in C++
Here, we are given a number N. Our task is to find unorder permutation of N using Alexander Bogomolny’s UnOrdered Permutation Algorithm.
Let’s discuss permutation first,
A permutation is the number of ways an item in a set can be uniquely ordered is called a permutation.
Example − Permutation of {4,9,2} would be {4,9,2}, {4,2,9}, {9,4,2}, {9,2,4}, {2,4,9} and {2,9,4}.
Permutations have found usage in defining switching networks in computer networking, parallel processing and also used in a variety of cryptographic algorithms.
Alexander Bogomolny's Unordered Permutation Algorithm
This algorithm computes all possible permutations of first N natural numbers. Given a number N, the permutations are computed from 1 to N.
Let’s take an example to understand the problem,
Input
N = 3
Output
1,2,3 ; 1,3,2 ; 2,1,3 ; 2,3,1 ; 3,1,2 ; 3,2,1
Algorithm
1. Build a function with an array, number N, and an integer k as parameters 2. Initialize the level, as level increases permute the rest of the values 3. When the recursion condition is reached all its values are printed.
Example
Program to show the implementation of our algorithm −
#include <iostream> using namespace std; int level = -1; void AlexanderBogomolyn(int permutations[], int N, int k) { level = level + 1; permutations[k] = level; if (level == N) { for (int i = 0; i < N; i++) cout<<permutations[i]<<"\t"; cout<<endl; } else{ for (int i = 0; i < N; i++) if (permutations[i] == 0) AlexanderBogomolyn(permutations, N, i); } level = level - 1; permutations[k] = 0; } int main(){ int N = 4; int permutations[N] = { 0 }; cout<<"All permutations are :\n"; AlexanderBogomolyn(permutations, N, 0); return 0; }
Output
All permutations are : 1 2 3 4 1 2 4 3 1 3 2 4 1 4 2 3 1 3 4 2 1 4 3 2 2 1 3 4 2 1 4 3 3 1 2 4 4 1 2 3 3 1 4 2 4 1 3 2 2 3 1 4 2 4 1 3 3 2 1 4 4 2 1 3 3 4 1 2 4 3 1 2 2 3 4 1 2 4 3 1 3 2 4 1 4 2 3 1 3 4 2 1 4 3 2 1