Выбор ответа Middle Задачи на Java обновлено
Arrays.sort для int[] и Integer[]
Вопрос
Чем Arrays.sort(int[]) отличается от Arrays.sort(Integer[])?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Для примитивов Dual-Pivot Quicksort, для объектов стабильный TimSort. Примитивы сортирует Dual-Pivot Quicksort: быстро, стабильность не нужна (равные числа неразличимы).
Варианты ответа
- Ничем: оба вызова используют один и тот же TimSort по сравнениям
- Для
int[]используется стабильная сортировка слиянием, а для объектов быстрая Arrays.sort(Integer[])не работает без явного компаратора и бросает исключение- Для примитивов Dual-Pivot Quicksort, для объектов стабильный TimSortправильный ответ
Разбор
Примитивы сортирует Dual-Pivot Quicksort: быстро, стабильность не нужна (равные числа неразличимы). Объекты сортирует TimSort: стабилен и гарантирует O(n log n). Массив Integer[] хранит ссылки на объекты в куче, сравнение идёт через compareTo, поэтому медленнее. Компаратор для Integer не нужен: используется естественный порядок.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.