Реализация сортировки слиянием в Java 6 в Arrays.java
использует сортировку вставкой, если длина массива меньше некоторой порог. Это значение жестко задано равным 7. Поскольку алгоритм является рекурсивным, в конечном итоге это происходит много раз для большого массива. Канонический алгоритм сортировки слиянием не делает этого, просто использует сортировку слиянием до тех пор, пока в списке не останется только 1 элемент.
Это оптимизация? Если да, то как это должно помочь? А почему 7
? Сортировка вставкой (даже элементов) резко увеличивает количество сравнений, требуемых для сортировки большого массива, поэтому добавит затраты на сортировку, где вызовы
compareTo ()
выполняются медленно .
(ось абсцисс - размер массива
, ось ординат - количество сравнений
, для разных значений INSERTIONSORT_THRESHOLD
)