Какой алгоритм сортировки использует Arrays.sort в Java? Динамически изменяется ли она в зависимости от операционной системы, размера ввода или чего-то еще?Реализация Arrays.sort, что он делает конкретно
ответ
Вы можете видеть из источника, что он делает на OpenJDK. Для примитивных типов он использует сортировку вставки для коротких массивов и модифицированную quicksort для более длинных; и сортировка по типу для массивов объектов.
Я не вижу, как операционная система будет производить сортировку.
Timsort - это гибридный вид где-то между mergesort и insertion sort - не думайте, что в него вошла quicksort. Он используется только в java7. –
Точно то, что я хотел, спасибо! – Caffinated
Питер, не против моего редактирования: quicksort нестабилен, поэтому применим только к примитивам. И timsort используется для массивов объектов всех размеров. –
Посмотрите на документации для Arrays.sort
: записка
реализации: Эта реализация является устойчивым, адаптивной, итерационным слиянием, что требует гораздо меньше, чем п Л.Г. (п) сравнения , когда массив входа частично отсортированный, предлагая производительность традиционного объединения, когда входной массив случайным образом упорядочен. Если входной массив почти отсортирован, реализация требует приблизительно n сравнений. Временное хранение требования варьируются от небольшой константы для почти отсортированных входных массивов до n/2 ссылок на объекты для произвольно упорядоченных массивов ввода.
Реализация принимает одинаковое преимущество по возрастанию и убыванию в своем массиве ввода и может использовать по возрастанию и по убыванию в разных частях одного и того же входного массива. Это , хорошо подходящий для слияния двух или более отсортированных массивов: просто объедините массивы и отсортируйте полученный массив.
Реализация была адаптирована для сортировки списка Тима Петерса для Python (TimSort). Он использует из Питера Методики Макилрой «Оптимистической Сортировкой и информацией Теоретико сложности», Труды четвертой ежегодной ACM-SIAM симпозиума по дискретным алгоритмам, С. 467-474, января 1993
Посмотри на исходный код: Arrays.sort
.
Это относится только к 'sort (Object [])'. –
sort
метод перегружен.
Для Java 7 рассмотрите примечания по реализации для разных типов, начиная с here и далее вниз.
- 1. Что конкретно делает?
- 2. Что конкретно делает setup.py clean?
- 3. Что конкретно делает htmlentities с строковыми htmlentities?
- 4. DefaultMemberAttribute - что он делает?
- 5. ^= оператор, что он делает?
- 6. Что он делает?
- 7. IsGUIThread - Что он делает?
- 8. Создание - что он делает?
- 9. Maven - Что он делает?
- 10. FMOD_Результат, что он делает
- 11. for (;;) {} что он делает?
- 12. Что он делает?
- 13. sortedArrayUsingSelector, что он делает?
- 14. MySQL '@': что он делает?
- 15. java.lang.ClassCastException в вызове Arrays.sort, хотя реализация Comparable
- 16. Что конкретно делает project.clj: зависимости и требуются ли они?
- 17. Что конкретно делает system.totalMemory test в ActionScript 3.0?
- 18. Вредоносный Javascript - Что он делает?
- 19. Powershell «ResumeState», что он делает
- 20. "Inheritance" Атрибут: что он делает?
- 21. Magento setStockStatusChangedAutomaticallyFlag: что он делает?
- 22. JavaScript - getElementById (что он делает?)
- 23. struct and :: - что он делает
- 24. Режим XSL, что он делает?
- 25. Вредоносный javascript - Что он делает?
- 26. Numpy argsort - что он делает?
- 27. MySQL «AS» --- Что он делает?
- 28. TComboBox.AutoCloseUp Свойство: Что он делает?
- 29. Что такое S_ISREG() и что он делает?
- 30. Что такое Boxen и что он делает?
Вы можете просто взглянуть на исходный код, который вы уже должны иметь на своей машине. –
Обратите внимание, что это описано в ['Arrays # sort' javadoc] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort%28java.lang.Object [ ]% 29) –
@RohitJain У меня нет исходного кода на моей машине, я не думаю ... У меня есть двоичные файлы. – Caffinated