Arrays.sort() в Java: сортировка массива - Вопросы

Всего: 5 вопросов

1. 

Что делает метод Arrays.sort() и что он возвращает?

Статический метод Arrays.sort() из класса java.util.Arrays сортирует элементы массива по возрастанию «на месте» (in-place). Он объявлен как void и ничего не возвращает, а изменяет сам переданный массив. Если исходный порядок элементов ещё понадобится, перед сортировкой нужно сделать копию: int[] copy = Arrays.copyOf(array, array.length);

2. 

Как отсортировать массив int[] по убыванию в Java?

Напрямую int[] по убыванию отсортировать нельзя: перегрузка с Comparator работает только с массивами объектов. Есть три варианта. 1) Использовать Integer[] и Arrays.sort(array, Comparator.reverseOrder()). 2) Отсортировать int[] по возрастанию и перевернуть его циклом, меняя местами элементы с концов к середине. 3) Применить Stream API: int[] desc = Arrays.stream(array).boxed().sorted(Comparator.reverseOrder()).mapToInt(Integer::intValue).toArray();

3. 

Какие алгоритмы сортировки использует Arrays.sort() под капотом?

Для примитивных типов Arrays.sort() использует двухопорную быструю сортировку (Dual-Pivot Quicksort), а для массивов объектов — TimSort, стабильную модификацию сортировки слиянием. Средняя сложность в обоих случаях — O(n log n), поэтому писать пузырьковую сортировку вручную в рабочем коде не нужно.

4. 

Чем Arrays.sort() отличается от Collections.sort()?

Arrays.sort() сортирует массивы, в том числе массивы примитивов (для них применяется Dual-Pivot Quicksort). Collections.sort() сортирует списки (List) с объектами и использует TimSort. Начиная с Java 8, Collections.sort() внутри делегирует методу list.sort(), который тоже использует TimSort.

5. 

Что делает метод Arrays.parallelSort() и когда его стоит применять?

Arrays.parallelSort() появился в Java 8 и имеет те же перегрузки, что и Arrays.sort(). Он разбивает массив на части, сортирует их в нескольких потоках через Fork/Join-пул и сливает результат. На больших массивах (сотни тысяч элементов и более) это даёт выигрыш на многоядерных процессорах; на маленьких массивах метод сам переключается на обычную последовательную сортировку, поэтому заметной разницы не будет.

Страница 1 из 1