首页 > 代码库 > 全排列

全排列

 

Java版代码:

public class Permutations {
    public static void main(String[] args) {
        String s = "abcd";
        permutations(s);
    }

    // 全排列
    public static void permutations(String s) {
        char[] arr = s.toCharArray();
        int[] cnt = new int[1];
        _permutations(arr, 0, cnt);
        System.out.println("共有" + cnt[0] + "中排列");
    }

    // cnt 用来统计排列的个数
    private static void _permutations(char[] arr, int start, int[] cnt) {
        if (start == arr.length - 1) {
            cnt[0]++;
            System.out.println(arr);
        }
        char tmp;
        for (int i = start; i < arr.length; ++i) {
            tmp = arr[start];
            arr[start] = arr[i];
            arr[i] = tmp;

            _permutations(arr, start + 1, cnt);

            tmp = arr[start];
            arr[start] = arr[i];
            arr[i] = tmp;
        }
    }

}

效果:

abcd
abdc
acbd
acdb
adcb
adbc
bacd
badc
bcad
bcda
bdca
bdac
cbad
cbda
cabd
cadb
cdab
cdba
dbca
dbac
dcba
dcab
dacb
dabc
共有24中排列

 

全排列