Зачем использовать два разных алгоритма для сортировки массивов?
В классе Arrays быстрая сортировка используется для сортировки примитивов, но для сортировки объектов она объединяет сортировку.
Интересно, почему это так?
Ответ 1
Причиной использования mergesort является то, что они хотят стабильный алгоритм - например, где равные объекты (на compareTo() или compare()) находятся в том же относительном порядке, что и раньше.
Для примитивов равенство подразумевает "недифференцируемость". При сортировке {5, 3, 5} до {3, 5, 5} неважно, какой из пяти был первым.
Поэтому мы можем использовать более быстрый (и нестабильный) алгоритм быстрой сортировки здесь.
Ответ 2
Догадка, но quicksort - это O (n ^ 2) в худшем случае, тогда как сортировка слияния стабильна (гарантируется O (n log n)).
Худший случай для быстрой сортировки запускается равными значениями.. и равные примитивы идентичны, а "равные" объекты могут не быть.