public class PermutationSelfInvoke {
public static String[] text = { "a", "b","C","D"}; public static void main(String[] args) {
permutation(text, 0, text.length);
System.exit(0);
} public static void permutation(String[] a, int m, int n) {
int i;
String t;
if (m < n - 1) {
permutation(a, m + 1, n);
for (i = m + 1; i < n; i++) {
t = a[m];
a[m] = a[i];
a[i] = t;
permutation(a, m + 1, n);
t = a[m];
a[m] = a[i];
a[i] = t;
}
} else {
printResult(a);
}
} public static void printResult(String[] text) {
for (int i = 0; i < text.length; i++) {
System.out.print(text[i]);
}
System.out.println();
}
}
//这段程序,看不懂,求高手进行注释,,或者举出例子 告诉我排列怎么去?还望各位大释多多帮忙

解决方案 »

  1.   

    就是一个排序算法啊。。用不着递归的,╮(╯▽╰)╭
    程序流程怎样的,可以在程序里面设置断点,设置a,m,n的初始值,一步一步得走着看
      

  2.   

    不懂啊,什么排序算法,和排序有什么关系,假如里面是"abc","bb","dd",该怎么办。求解
      

  3.   


    //表示将m到n的字符进行全排序
    public static void permutation(String[] a, int m, int n) {
    int i;
    String t;
    if (m < n - 1) {
    //表示将m+1到n的字符进行全排序
    permutation(a, m + 1, n);
    for (i = m + 1; i < n; i++) {
    //把第m个字符与后边的字符进行交换
    t = a[m];
    a[m] = a[i];
    a[i] = t;
    //交换以后,把m+1与后边的到n的字符进行全排序
    permutation(a, m + 1, n);

    //换回来
    t = a[m];
    a[m] = a[i];
    a[i] = t;
    }
    } else {
    //输出整个交换后的结果
    printResult(a);
    }
    }
    /**
     * 假设是ab
     * 由于m<n-1
     * 那么对b进行全排序
     *              参数字符串为b,在递归中,由于m=n-1,所以输出ab,返回
     * 然后把ab进行交换,参数中字符串为a,在递归中,由于m=n-1,所以输出ba,返回
     */