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