それはいくつかの議論があるようで行ったとき、この変更はcore-libs mailing listを経て、そこの役に立つリンク。コードレビューの変更を伴うweb revとoriginal patchもあります。
コード内のコメントが言う:
実装上の注意:この実装は安定し、適応され、n個のLGよりもはるかに少ないが必要です
反復マージソート(n)を比較
入力配列があるとき入力配列が
の場合、伝統的なマージソートのパフォーマンスは
となります。入力配列がほぼソートされている場合、
の実装には約n回の比較が必要です。
一時的な記憶域要件は、ほぼ並べ替えの小定数と異なります。
入力配列はランダムに入力された入力のn/2オブジェクト参照
配列です。
実装は、その入力アレイに等しい上昇の利点と
降順を取り、同じ
入力配列の異なる部分に
上昇の利点と降順を取ることができます。 2つ以上のソートされた配列をマージするのに適しています。
単純に配列を連結し、結果の配列をソートします。
実装は、PythonのTim Petersのリストソート
TimSortから適応されました。これは、離散アルゴリズム、頁467-474、
1993年1月
埋葬に
第4回年次ACM-SIAMシンポジウムでピーター・マッキロイの「楽観
ソートと情報理論的複雑さ」からtechiquesを、使用していますvery useful link to the Python implementation detailsがあります。私はそれが始まるのに最適な場所だと考えています。その後、コードが続きます。信じられないほど高いレベルであるために、ソートされたデータの実行に気づき、ソート中にその構造を利用することによって、パフォーマンスが向上します。
このリンクは以前の質問のhttp://svn.python.org/projects/python/trunk/Objects/listsort.txtはかなり明確です。それは調整され、最適化されたマージソートです。 – dmckee
私は実際には、私の「いくつかのドキュメント」のリンクにリンクしています。一定。私の質問は、特にその文書への回答でした。私はTimsortを擬似コードレベルから理解するのに役立つものではありませんでした。 – Yang