Назад к вопросам
СБЕР дейвайсы
Junior — Middle
66
Можешь перечислить алгоритмы сортировки, используемые в языке Java, и кратко описать их особенности?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java для сортировки массивов и коллекций используются разные алгоритмы, в зависимости от типа данных и версии JDK:
-
Arrays.sort() для примитивных типов (int, long, double и др.) — использует алгоритм Dual-Pivot Quicksort. Это быстрая сортировка с усовершенствованиями, средняя сложность O(n log n), но в худшем случае может деградировать до O(n²).
-
Arrays.sort() для объектов (например, Integer, String) — с Java 7 используется TimSort, гибридный алгоритм, основанный на слиянии и вставках. Он стабилен и эффективен для частично отсортированных данных.
-
Collections.sort() — внутри вызывает Arrays.sort() для списков, использует TimSort.
Особенности:
- Dual-Pivot Quicksort быстрее классического Quicksort, но нестабилен.
- TimSort стабилен, хорошо работает на реальных данных с уже частично отсортированными элементами.
Пример использования:
int[] arr = {5, 3, 8, 1};
Arrays.sort(arr); // Dual-Pivot Quicksort для int
List<String> list = Arrays.asList("banana", "apple", "pear");
Collections.sort(list); // TimSort для объектов