/**
* 整体思路:第一个位置的元素固定后,则以该元素开头的全排列就是该元素与其他元素全排列的拼接
* for循环中是将每一个元素都换到第一个位置,并求其他元素的全排列
* @param array
* @param start
*/
public static void optation(char[] array,int start){
if(start == array.length-1){
System.out.println(new String(array));
}
for(int i=start;i<array.length;i++){
//避免重复
if(start ==i || array[i] != array[start]){
//将每个位置的元素都与首元素交换
swap(array,i,start);
optation(array,start+1);
//求完全排列之后需要将元素的位置复原,以便进行下一次全排列的求解
swap(array,i,start);
}
}
}