Lectures Notes on 24 October 2011 public class Permute { public static void printArray (int[] a) { for (int i = 0; i < a.length; i++) { System.out.print (a[i] + " "); } System.out.println (); } public static void swap (int[] a, int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } public static void permute (int[] a, int lo, int hi) { if (lo == hi) { printArray (a); } else { for (int i = lo; i <= hi; i++) { swap (a, lo, i); permute (a, lo + 1, hi); swap (a, i, lo); } } } public static void main (String[] args) { int[] a = {1, 2, 3, 4}; permute (a, 0, a.length - 1); } }