Sobes.tech
Назад к вопросам
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 для объектов