package com.interview.algorithms.general;
import com.interview.basics.sort.QuickSorter;
import com.interview.utils.ArrayUtil;
import com.interview.utils.ConsoleWriter;
/**
* Created with IntelliJ IDEA.
* User: stefanie
* Date: 8/28/14
* Time: 3:45 PM
*/
public class C1_51_AllPermutation {
static QuickSorter<Character> SORTER = new QuickSorter<>();
public static void printRecursive(Character[] chars){
printRecursive("", chars);
}
private static void printRecursive(String prefix, Character[] chars){
if(prefix.length() == chars.length) {
System.out.println(prefix);
return;
}
for(char ch : chars){
if(!prefix.contains(ch+"")) printRecursive(prefix + ch, chars);
}
}
public static void printDicSort(Character[] chars){
SORTER.sort(chars);
ConsoleWriter.printCharacterArray(chars);
while(true){
int i;
for (i = chars.length - 2; i >= 0; --i) {
if (chars[i] < chars[i + 1]) break;
}
if (i < 0) break;
int k;
for (k = chars.length - 1; k > i; --k) {
if (chars[k] > chars[i]) break;
}
ArrayUtil.swap(chars, i, k);
ArrayUtil.reverse(chars, i + 1, chars.length - 1);
ConsoleWriter.printCharacterArray(chars);
}
}
}