博主头像
7024w的自留地

觉宇宙之无穷,识盈虚之有数

全排列递归算法

public static void perm(int[] buf, int start, int end) {
    int temp;
    if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
        for (int i = 0; i <= end; i++) {
            System.out.print(buf[i]);
        }
        System.out.println();
    } else {// 多个字母全排列
        for (int i = start; i <= end; i++) {
            temp = buf[start];// 交换数组第一个元素与后续的元素
            buf[start] = buf[i];
            buf[i] = temp;
            perm(buf, start + 1, end);// 后续元素递归全排列
            buf[i] = buf[start]; // 将交换后的数组还原
            buf[start] = temp;
        }
    }
}
发表新评论