Qual algoritmo o sort()
método embutido em Python está usando? É possível dar uma olhada no código desse método?
python
algorithm
sorting
python-internals
Johannes
fonte
fonte
sort()
método ou qual é a formatação para o interpretador, mas tem que estar lá em algum lugar, e aposto que está implementado em C por questões de velocidade.Respostas:
Certo! O código está aqui , começando com função
islt
e prosseguindo por QUITE um pouco ;-). Como o comentário de Chris sugere, é um código C. Você também vai querer ler este arquivo de texto para uma explicação textual, resultados, etc, etc.Se você preferir ler código Java em vez de código C, pode olhar para a implementação de timsort de Joshua Bloch em e para Java (Joshua também é o cara que implementou, em 1997, o mergesort modificado que ainda é usado em Java, e pode-se esperar que Java o faça eventualmente, mude para sua porta recente do timsort).
Alguma explicação sobre a porta Java do timsort está aqui , o diff está aqui (com ponteiros para todos os arquivos necessários), o arquivo-chave está aqui - FWIW, embora eu seja um programador C melhor do que programador Java, neste caso eu acho O código Java de Joshua é mais legível em geral do que o código C de Tim ;-).
fonte
list_ass_item()
faz. :)listsort.txt
adiciona algumas notas que tratam de confusões comuns.Eu só queria fornecer um link muito útil que perdi na resposta abrangente de Alex: Uma explicação de alto nível do timsort do Python (com visualizações de gráfico!).
(Sim, o algoritmo é basicamente conhecido como Timsort agora)
fonte
Nas primeiras versões do python, a função sort implementou uma versão modificada do quicksort. No entanto, ele foi considerado instável e, a partir de 2.3, eles passaram a usar um algoritmo de fusão adaptável.
fonte