О Python, построенном методом sort()

Какой алгоритм использует встроенный метод sort() в Python? Можно ли просмотреть код для этого метода?

Ответ 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 - лучший алгоритм сортировки, потому что он работает с двумя сортировками, которые имеют два преимущества: одно имеет низкую постоянную скорость, а другое обладает более высокой эффективностью, чем двоичная сортировка с вставкой и сортировка слиянием.