首页 > 代码库 > 全排列

全排列

package com.perm;public class Permutation {    public static void perm(int[] num, int i) {        if (i < num.length - 1) {            for (int j = i; j <= num.length - 1; j++) {                int temp = num[j];                // 旋转该区间最右边数字至最左边                for (int k = j; k > i; k--) {                    num[k] = num[k - 1];// 减法                }                num[i] = temp;                perm(num, i + 1);                // 还原                for (int k = i; k < j; k++) {                    num[k] = num[k + 1];// 加法                }                num[j] = temp;            }        } else {            // 显示此次排列            for (int j = 1; j <= num.length - 1; j++) {                System.out.print(num[j] + " ");            }            System.out.println();        }    }    public static void main(String[] args) {        int[] num = new int[4 + 1];        for (int i = 1; i <= num.length - 1; i++) {            num[i] = i;        }        perm(num, 1);    }}

 

全排列