sort()
Pythonに組み込まれているメソッドはどのアルゴリズムを使用していますか?そのメソッドのコードを見ることができますか?
3 に答える
もちろん!コードはここにあり、関数から始まりislt
、しばらくの間QUITEに進みます;-)。クリスのコメントが示唆しているように、それはCコードです。また、テキストによる説明や結果などについては、このテキストファイルをお読みください。
CコードよりもJavaコードを読む方が好きな場合は、JavaでのティムソートのJoshua Blochの実装を見ることができます(Joshuaは、1997年に、Javaでまだ使用されている変更されたマージソートを実装した人でもあり、Javaが最終的に彼の最近のティムソートの移植に切り替えます)。
timsortのJavaポートの説明はここにあり、diffはここにあり(必要なすべてのファイルへのポインターを含む)、キーファイルはここにあります-FWIW 、私はJavaプログラマーよりも優れたCプログラマーですが、この場合はJoshuaのJavaコードは、TimのCコードよりも全体的に読みやすくなっています;-)。
Alexの包括的な回答では見逃していた非常に役立つリンクを提供したかっただけです。Pythonのティムソートの高レベルの説明(グラフの視覚化を使用)。
(はい、アルゴリズムは基本的に現在ティムソートとして知られています)
初期のpythonバージョンでは、sort関数はquicksortの修正バージョンを実装していました。ただし、不安定であると見なされ、2.3の時点で、適応マージソートアルゴリズムの使用に切り替えました。