Print all permutations of a string in sorted (lexographic) order
For example, Given the Input String ABC, the output should be ABC, ACB, BAC, BCA, CAB, CBA.
##Hint
We are gonna use the below catch for generating all the permutations of a given string.
All permutations of a string X is the same thing as all permutations of each possible character in X, combined with all permutations of the string X without that letter in it.

So all permutations of abcd are
a concatenated with all permutations of bcd
b concatenated with all permutations of acd
c concatenated with all permutations of bad
d concatenated with all permutations of bca
####Code (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<iostream>
using namespace std;
void change(char *a,int i,int j){
	int temp = a[j];
	while(j>i){
		a[j] = a[j-1];
		j--;
	}
	a[j] = temp;
}
void revert(char *a,int i,int j){
	int temp = a[i];
	while(i<j){
		a[i] = a[i+1];
		i++;
	}
	a[i] = temp;
}
void permute(char *a,int i, int n){
	if(i==n)
	cout<<a<<endl;
	else{
		for(int j=i;j<=n;j++){
		change(a,i,j);
		permute(a,i+1,n);
		revert(a,i,j);
		}
	}
}
int main(){
	char a[] = "ABCD";
	permute(a,0,3);
}