Welchen Algorithmus verwendet die sort()
in Python integrierte Methode? Ist es möglich, sich den Code für diese Methode anzusehen?
python
algorithm
sorting
python-internals
Johannes
quelle
quelle
sort()
Methode implementieren oder wie die Formatierung für den Interpreter ist, aber sie muss irgendwo drin sein, und ich wette, sie ist aus Geschwindigkeitsgründen in C implementiert.Antworten:
Sicher! Der Code ist hier , beginnend mit der Funktion
islt
und für eine ganze Weile ;-). Wie Chris 'Kommentar andeutet, handelt es sich um C-Code. Du wirst auch lesen wollen diese Textdatei um eine Texterklärung, Ergebnisse usw. usw. zu erhalten.Wenn Sie lieber Java-Code als C-Code lesen, können Sie sich Joshua Blochs Implementierung von Timsort in und für Java ansehen (Joshua ist auch derjenige, der 1997 den modifizierten Mergesort implementiert hat, der immer noch in Java verwendet wird, und man kann hoffen, dass Java dies tut schließlich zu seinem jüngsten Hafen von Timsort wechseln).
Eine Erklärung des Java-Ports von timsort finden Sie hier , der Unterschied ist hier (mit Zeigern auf alle benötigten Dateien), die Schlüsseldatei ist hier - FWIW, während ich ein besserer C-Programmierer als Java-Programmierer bin, finde ich in diesem Fall Joshuas Java-Code ist insgesamt besser lesbar als Tims C-Code ;-).
quelle
list_ass_item()
tut. :)listsort.txt
fügt einige Notizen hinzu, die sich mit häufigen Verwirrungen befassen.Ich wollte nur einen sehr hilfreichen Link liefern, den ich in Alex 'ansonsten umfassender Antwort verpasst habe: Eine allgemeine Erklärung von Pythons Timsort (mit !).
(Ja, der Algorithmus ist jetzt im Grunde als Timsort bekannt. )
quelle
In frühen Python-Versionen implementierte die Sortierfunktion eine modifizierte Version von Quicksort. Es wurde jedoch als instabil eingestuft und ab 2.3 wurde auf die Verwendung eines adaptiven Mergesort-Algorithmus umgestellt.
quelle