アレイ内のメジアン要素を発見するための通常の単純なアルゴリズムの数です。n
- から要素を置き換えてサンプルする A B
- ソートとランクを見つける要素との| B | ± √ lrB
- そのチェックと中央値の反対側にあるとせいぜいがあることの要素との間のといくつかの適切な定数を。これが起こらない場合は失敗します。R A C √ AlrC>0
- それ以外の場合は、の要素をと間で並べ替えて中央値を求めます。L個のR
これが線形時間で実行され、高い確率で成功することを確認するのは難しくありません。(すべての悪いイベントは、二項式の期待から大きく逸脱しています。)
クイックソートを見た生徒に教えるのがより自然な同じ問題の代替アルゴリズムは、ここで説明するものです。ランダム化された選択
これが線形の予想実行時間を持っていることも簡単にわかります。「ラウンド」は、1/4から3/4の分割が行われたときに終了する再帰呼び出しのシーケンスであり、予想される長さがラウンドの最大数は2です(ラウンドの最初のドローでは、アルゴリズムが説明されているように、ラウンドの長さが幾何ランダム変数によって支配されるため、ラウンドが適切に分割される確率は1/2になり、その後実際に増加します。)
だから今の質問:
ランダム化された選択が高い確率で線形時間で実行されることを示すことは可能ですか?
我々はラウンドを、各ラウンドは少なくとも長有する確率で最大で結合した組合が実行時間であることを与えるので、確率。k 2 − k + 1 O (n log log n )1 − 1 / O (log n )
これはちょっと物足りないですが、本当ですか?