web-dev-qa-db-ja.com

Pythonの組み込みsort()メソッドについて

Python)のsort()メソッドに組み込まれているアルゴリズムは何ですか?そのメソッドのコードを見ることができますか?

88
Johannes

もちろん!コードの here 。関数isltで始まり、しばらくQUITEに進みます;-)。 Chrisのコメントが示唆するように、それはCコードです。テキストの説明、結果などについては、 this テキストファイルもお読みください。

Javaコードを読みたい場合は、Joshua Blochのtimsortの実装を調べて、Java( 1997年、まだJavaで使用されている変更されたマージソート。Javaが最終的に彼の最近のtimsortのポートに切り替えられることを期待できます)。

Java timsortのポートは here 、diffは here (必要なすべてのファイルへのポインター付き)、キーファイル ここ -FWIW、私はJavaプログラマよりも優れたCプログラマですが、この場合、JoshuaのJava TimのCコードよりも全体的に読みやすいコード;-)。

99
Alex Martelli

Alexのその他の包括的な答えを見逃した非常に役立つリンクを提供したかっただけです。 Pythonのtimsortの高レベルの説明 (グラフの視覚化で!)。

(はい、アルゴリズムは基本的に Timsort nowとして知られています)

27
u0b34a0f6ae

初期のpythonバージョンでは、ソート関数はクイックソートの修正バージョンを実装していました。しかし、それは不安定であると見なされ、2.3の時点で、適応マージソートアルゴリズムの使用に切り替えました。

7
Silfverstrom