java.util.Arrays uses quicksort (actually dual pivot quicksort in the most recent version) for primitive types such as
int and mergesort for objects that implement
Comparable or use a
Comparator. Why the difference? Why not pick one and use it for all cases? Robert Sedgewick suggests that “the designer’s assessment of the idea that if a programmer’s using objects maybe space is not a critically important consideration and so the extra space used by mergesort maybe’s not a problem and if the programmer’s using primitive types maybe performance is the most important thing so we use the quicksort”, but I think there’s a much more obvious reason.