私は、無作為化・セレクトオンラインの反復バージョンのコードが見つかりました:ランダム化された選択の反復バージョンは何をしますか?
RANDOMIZED-SELECT(A,p,r,i)
while p < r do
q ← RANDOMIZED-PARTITION(A,p,r)
k ← q – p +1
if i ≤ k then
r ← q
else
p ← q + 1
i ← i – k
return p
誰かが最後まで私< = kの場合からのコードの一部が何を私に説明することができれば、私はそれを本当に感謝でしょうか?再帰版とは何が違うのですか?
どのような言語ですか?タグを付ける必要があります。いずれにしても、おそらく答えは「ランダム化区画」が何をするかに依存するでしょう。おそらくあなたはそれが何であるか教えてくれるでしょう。 –
@JohnColeman:これは、Cormenらによる「Introduction to Algorithms」の擬似コードのように見えます。アルゴリズムは無作為化された「配列の中でi番目の最小要素を見つける」、[Quickselect](https://en.wikipedia.org/wiki/Quickselect)としても知られています。 'RANDOMIZED-PARTITION'はランダムな要素を選択し、要素がその要素の以下かどうかに基づいて配列を分割し、次に左の区画の最後の要素のインデックスを返します。 (しかし、はい、OPはこれを述べているはずです) –
@AasmundEldhusetありがとうございました。私はそれが疑似コードかもしれないと思ったが、それはまた、それがいくつかのコンピュータ代数システムから来た可能性があるように見える。あなたの答えは素晴らしく、upvoteの価値があります。 –