Median of medians
のアプローチは、かなり良いピボットをもたらすために、quicksort
タイプの分割アルゴリズムで非常に普及しており、アレイを一様に分割します。その論理はウィキペディアで次のように与えられます:メディアンの中央値の説明アルゴリズム
選択されたピボットは、メジアンのリストの要素の半分よりも小さく、n/10要素(1/2 *(n/5) ))。これらの要素のそれぞれは5の中央値であり、2つ未満の他の要素とブロック外の2つ以上の他の要素となります。したがって、ピボットはブロック外の3(n/10)個未満であり、ブロック外の3(n/10)個以上の要素です。したがって、選択された中央値は、アルゴリズムの最悪の場合の線形動作を保証する、30%/ 70%〜70%/ 30%の間のどこかの要素を分割する。
誰かが私にとって明快に説明できますか?私はその論理を理解するのが難しいと思っています。数字の次のセットの
このメソッドは、この数は中央値であることを保証するんかちょうど別の質問、 ?中央値は、配列を上半分と下半分に分割する数値です。それで30-30-70の数字は何を表していますか? – SexyBeast
まあ、中央値は中央にありますが、 'm'(上のテキスト)はすべての数値の中央値ではありません。それは数字のわずか5分の1の中央値である(それは小さな5要素グループの中央値である)。もっと注意を払って最後の段落を読んでみてください。結局、「m」が少なくとも「3n/10」よりも大きいと結論づけられたところでは、「m」は少なくとも30%よりも大きいと解釈されます。結局、それは「m」が少なくとも30%より大きく、少なくとももう30%より小さくなるようになります。私たちは確信が持てません40%が残っています。 – Shahbaz
それでは平均して50-50パーティションになるのはどうですか? 50-50パーティションは正規の中央値で与えられます。 – SexyBeast