grepcodeでjava.util.ArrayListのsort()メソッドのソース コードを見ていました。小さな配列 (サイズ < 7) では挿入ソートを使用し、大きな配列ではマージソートを使用しているようです。サイズが7未満の配列に対してのみ挿入ソートを使用することを考えると、それが大きな違いを生むかどうか疑問に思っていました.実行時間の違いは、最新のマシンではほとんど目立ちません。
私はコーメンでこれを読みました:
マージソートは O(n*logn) の最悪ケースの時間で実行され、挿入ソートは O(n*n) の最悪ケースの時間で実行されますが、挿入ソートの定数係数により、実際には多くのマシンで小さな問題サイズの場合は高速になります。 . したがって、部分問題が十分に小さくなったときに、マージ ソート内で挿入ソートを使用して再帰の葉を粗くすることは理にかなっています。
必要なコンポーネントのソートアルゴリズムを設計した場合、マージソートと比較して実行時間の違いが明らかになる前に、より大きなサイズ (おそらくサイズ < 100) に挿入ソートを使用することを検討します。
私の質問は、サイズ < 7 に到達する背後にある分析は何ですか?