Найти тему

Разрыватор пукана фанатам .net Framework (к коим я уже лет двадцать отношусь, да).


Встроенный в .net Framework алгоритм сортировки до четвёртой версии фреймворка был Quicksort (сейчас для маленьких массивов Insertion sort, для очень больших массивов Heapsort, для средних остаётся Quicksort).

В то время, как в Python используется только и исключительно Timsort.

Для тех, кто не понял, в чём попаболь, и умеет в высшую математику, поясняю.

Средняя сложность Quicksort, Heapsort и Timsort составляет O(n log n). Вроде всё хорошо, баш на баш. Однако, в худшем случае Quicksort сваливается до O(n²) [худший случай для него – это, например, когда массив уже отсортирован, но в обратном порядке], аки бы алгоритм Бурбухи, в то время как Heapsort и Timsort сохраняют оценку. Такие дела.

p.S. А вот слышал я, есть на свете такое диво, как пуперсекретный вундералгоритм, сортирующий за O(log n). То есть при его использовании анекдот про поиск минимального элемента массива сортировкой и взятием первого элемента перестаёт быть анекдотом. Правда, говорят, память кушает как не в себя.
Около минуты