Grokking Timsort
Gibt es eine (relativ) neue Art auf dem block namens Timsort. Es ist verwendet worden, als Python-Liste.Art, und wird nun das neue Array.Sortieren in Java 7.
Gibt es einige Dokumentation und ein winzigen Wikipedia-Artikel Beschreibung der high-level-Eigenschaften der Art, und einige low-level-performance-Bewertungen, aber ich war neugierig, ob jemand kann bieten einige pseudocode zu veranschaulichen, was Timsort wird genau gemacht, und was sind die wichtigsten Dinge, die es machen, zippy. (Esp. mit Bezug auf die zitierten Papier, "Optimistisch Sortieren und Informationen Theoretischer Komplexität.")
(Siehe auch Verwandte StackOverflow-post.)
- Diesen link svn.python.org/projects/python/trunk/Objects/listsort.txt aus der früheren Frage ist ziemlich klar. Es ist eine optimierte und optimierter merge-sort.
- Ich meinte eigentlich einen link zu, dass in meiner "Dokumentation" - link. Behoben. Meine Frage war insbesondere eine Reaktion auf das Dokument - ich fand es nicht sein nützlich für das Verständnis der Timsort aus einer pseudocode-ish-Stufe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter Angabe der jeweiligen Teil von einem inzwischen gelöschten blog-post: Visualisierung von Algorithmen zur Sortierung: Python ' s timsort
[...]
Diese änderung ging durch die core-libs-mailing-Liste, wenn es ging, so gibt es einige Diskussionen und nützliche links gibt. Hier ist die web-rev mit code-änderungen prüfen und auch die original patch.
Die Kommentare im code sagen:
Begraben, dort ist die sehr nützlicher link, um die Python-Implementierung details, und ich denke, das ist ein großartiger Ort zu starten, gefolgt von dem code. Auf unglaublich hohem Niveau darüber, timsort verbessert die Leistung, indem es zu bemerken läuft der sortierten Daten, und unter Ausnutzung der Struktur während der Sortierung.