Какой алгоритм использует встроенный метод sort()
в Python? Можно ли просмотреть код для этого метода?
О Python, построенном методом sort()
Ответ 1
Конечно! Код здесь, начиная с функции islt
и продолжая QUITE a while;-). Как замечает Крис, это C-код. Вы также захотите прочитать текстовый файл this для текстового объяснения, результатов и т.д. И т.д.
Если вы предпочитаете читать код Java, а не код C, вы можете посмотреть на реализацию Joshua Bloch timsort в Java и на Java (Joshua также парень, который в 1997 году реализовал модифицированную систему слияния, которая все еще используется на Java, и можно надеяться что Java в конечном итоге переключится на свой последний порт timsort).
Некоторое объяснение порта Java timsort здесь, diff здесь (с указателями на все необходимые файлы) ключевой файл здесь - FWIW, а я лучше C программист, чем программист на Java, в этом случае я нахожу код Joshua Java более читабельным в целом, чем код Тима С. -).
Ответ 2
Я просто хотел предоставить очень полезную ссылку, которую я пропустил в Alex, в противном случае полный ответ: Высокое объяснение Timsort на Python (с графические визуализации!).
(Да, теперь алгоритм в основном известен как Timsort)
Ответ 3
В ранних версиях python функция sort реализовала модифицированную версию quicksort. Однако он считался нестабильным, и по состоянию на 2.3 они переключились на использование адаптивного алгоритма слияния.
Ответ 4
я слышал, что timsort - лучший алгоритм сортировки, потому что он работает с двумя сортировками, которые имеют два преимущества: одно имеет низкую постоянную скорость, а другое обладает более высокой эффективностью, чем двоичная сортировка с вставкой и сортировка слиянием.