预览稿子: 算法备忘录-对数组全排列
预览文章: 算法备忘录----对数组全排列
public class ArrayPermutation { public static void main(String[] args) { char[] str = {'a','b','c','d'}; dopa(str,str.length); } /* * 对数组a的第0到第n-1项进行全排列 */ public static void dopa(char[]a,int n){ if(n==1){//如果n为1,则无需再进行全排列,此时应该输出数组了 printArray(a);//打印数组 //return; }else{ for(int i=0;i<n;i++){// dopa(a,n-1);//对数组a的第0到第n-2项进行全排列 // if(n==2){ // printArray(a); // } rotate(a,n);//轮换数组的第n-1项 } } } /** * 轮换数组的第n-1项,为确保数组下次能够正确轮换,需要将数组第0到第n-2项均右移一位, * 然后将第n-1项放到第0位 * @param a * @param n */ private static void rotate(char[] a, int n) { char temp = a[n-1]; for(int i=n-1;i>0;i--){ a[i]=a[i-1]; } a[0] = temp; } /** * 打印数组 * @param a */ public static void printArray(char[]a){ for(int i=0;i<a.length;i++){ System.out.print(a[i]); } System.out.println(); } }