Huh... that's interesting. I wonder why Arrays.sort(int[]) is all in-place but sort(Object[]) is not.
I was wondering that myself. Here's the code: public static <T> void sort(T[] a, Comparator<? super T> c) { T[] aux = (T[])a.clone(); if (c==null) mergeSort(aux, a, 0, a.length, 0); else mergeSort(aux, a, 0, a.length, 0, c); }