grepcodeのsort()メソッドのソースコードをjava.util.ArrayListに探していました。彼らは小さな配列(サイズ< 7)の挿入ソートを使用し、大きな配列のソートをマージしているようです。私は、サイズが<の配列に対してのみ挿入ソートを使用するという点で、大きな違いがあるのだろうかと疑問に思っていました。実行時間の違いは現代のマシンではほとんど目立たないでしょう。Java.util.ArrayList.sort()ソートアルゴリズム
私はCormenでこれを読んでいる:マージソートはOで実行
が(N * LOGN)最悪の場合、時間と挿入ソートOで実行される(n個の* n)が最悪の場合の時、定数挿入ソートの要素は、多くのマシンで小さな問題のサイズに対して実際にはより速くすることができます。したがって、サブ問題が十分に小さくなったときにマージソート内で挿入ソートを使用することによって、再帰の葉を粗くすることは意味があります。
マージソートと比較して、私は、時間を実行しているの違いの前に(多分サイズ< 100件まで)その後、私は大きいサイズの挿入ソートを使用して検討すると、私が必要とするいくつかのコンポーネントのソートアルゴリズムを設計していた場合、明らかになる。
私の質問は、サイズ< 7に到着した後の分析は何ですか?
私は少しあなたのポイントを今得ています。もし我々が非常に大きな配列を持っていたとすると、それを再帰的にソートすると、配列は多数の小さな配列に分割されます。それは私が挿入の並べ替えの効率がその仕事をするのを推測するところです。 –
@ sultan.of.swing:まさに。 – NPE
うん、私は私の質問に答えると思う。私は、ベンチマークの結果を分析して、サイズ7を選択するという考えを信じる必要があります:) –