Выбор ответа Middle Задачи на Java обновлено

Arrays.sort для int[] и Integer[]

Вопрос

Чем Arrays.sort(int[]) отличается от Arrays.sort(Integer[])?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Для примитивов Dual-Pivot Quicksort, для объектов стабильный TimSort. Примитивы сортирует Dual-Pivot Quicksort: быстро, стабильность не нужна (равные числа неразличимы).

Варианты ответа

  1. Ничем: оба вызова используют один и тот же TimSort по сравнениям
  2. Для int[] используется стабильная сортировка слиянием, а для объектов быстрая
  3. Arrays.sort(Integer[]) не работает без явного компаратора и бросает исключение
  4. Для примитивов Dual-Pivot Quicksort, для объектов стабильный TimSortправильный ответ

Разбор

Примитивы сортирует Dual-Pivot Quicksort: быстро, стабильность не нужна (равные числа неразличимы). Объекты сортирует TimSort: стабилен и гарантирует O(n log n). Массив Integer[] хранит ссылки на объекты в куче, сравнение идёт через compareTo, поэтому медленнее. Компаратор для Integer не нужен: используется естественный порядок.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.