Почему сортировка слиянием используется для объектов в Android / Java API?
На явеArrays.sort () для примитивного типа используется быстрая сортировка. С другой стороныArrays.sort () для объектов использует сортировку слиянием. И то же самое касаетсяCollection.sort () который также использует сортировку Merge. Сортировка коллекций использует реализацию сортировки Arrays. Итак, в простом смысле я могу сказать, что примитивы сортируются с помощью быстрой сортировки, а объекты сортируются с помощью сортировки слиянием.
Я предполагаю, что это как-то связано с алгоритмом сортировки. Есть так много дискуссий о SO на быстрой сортировке против сортировки слиянием, какэтот а такжеэтот, Кажется, есть противоречивые утверждения о том, какой из них лучше, и это понятно, поскольку это зависит от наборов данных.
Мое понимание
На месте: быстрая сортировка выигрывает. Сортировка слиянием может быть реализована на месте для связанного спискаВнешнее хранилище данных: сортировка слияниями выигрывает.Список сортировки (поддерживаемый любым видом связанного списка): сортировка слияниями выигрывает.Ссылка на сайтAndroid API, похоже, следует той же схеме, что и Java. Это то, что я нашел вArrays.java
public static void sort(long[] array) {
DualPivotQuicksort.sort(array);
}
И это,
public static void sort(Object[] array) {
ComparableTimSort.sort(array);
}
Что я не понимаю, так это то, что делает сортировку Merge хорошим кандидатом для сортировки объектов в Java или в Android? Почему бы не оставить это решение за разработчиками?