我用的是递归实现的全排序 从控制台输入全排序数字的个数 然后依次读入各个数 本题还实现了特定要求 比如 4 在 3 的前面才输出 public class qpx { public static int flag = 1; public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int a[] = new int[n]; for (int i = 0; i < a.length; i++) { a[i] = in.nextInt(); } QPX(a, 0, a.length - 1); } public static void QPX(int[] a, int r, int s) { if (r == s) { // 4要在3的左边 for (int i = 0; i <= s; i++) { if (a[i] == 3) { flag = 1; } else if (a[i] == 4) { flag = 2; } } //flag==1 说明3在后面 if (flag == 1) { print(a); } } else { for (int j = r; j <= s; j++) { swap(a, j, r); QPL(a, r + 1, s); swap(a, j, r); } } } public static void swap(int a[], int i, int j) { int tem = a[i]; a[i] = a[j]; a[j] = tem; } public static void print(int a[]) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } }