读书人

预览稿子: 算法备忘录-对数组全排列

发布时间: 2012-12-28 10:29:05 作者: rapoo

预览文章: 算法备忘录----对数组全排列

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();}}

读书人网 >编程

热点推荐