优化前: public static void main(String[] args) { Integer l[] = {1,5,2}; sort(l,0); } public static void sort(Integer[] l, int index) { if (index == l.length - 1) { System.out.println(Arrays.asList(l)); return; } for (int i = index; i < l.length; i++) { Integer[] ll = Arrays.copyOf(l, l.length); ll[index] = l[i]; ll[i] = l[index]; sort(ll, index + 1); } }
优化后:
public static void sort(Integer[] l, int index) { if (index == l.length - 1) { System.out.println(Arrays.asList(l)); return; } for (int i = index; i < l.length; i++) { Integer tem = l[index]; l[index] = l[i]; l[i] = tem; sort(l, index + 1); l[i] = l[index]; l[index] = tem; } }