このMedian of medians
アプローチは、型分割アルゴリズムで非常に人気がありquicksort
、配列を均一に分割するなど、かなり優れたピボットを生成します。その論理はウィキペディアで次のように示されています。
選択されたピボットは、中央値のリストにある要素の半分未満と半分より大きい両方です。これは、各半分で約n / 10要素(1/2 *(n / 5))です。これらの各要素は中央値5であり、他の2つの要素より少なく、ブロックの外側にある他の2つの要素より大きくなります。したがって、ピボットは、ブロックの外側の3(n / 10)要素未満であり、ブロックの外側の別の3(n / 10)要素よりも大きくなります。したがって、選択された中央値は、要素を30%/ 70%から70%/ 30%の間のどこかに分割します。これにより、アルゴリズムの最悪の場合の線形動作が保証されます。
誰かが私のためにそれを少し明快に説明できますか?論理を理解するのが難しいと感じています。