質問

Cormen、Leiseron、RivestとSteinによる本「アルゴリズムの紹介」を使って、それらは正当性を示すために説明しており、ループの3つの段階、初期化、メンテナンス、終了のための不変が保持されているループの。

以下のアルゴリズムに基づいて、以下のプロパティ1と2を理解していません。 画像の説明が入力されています

これは私が参照しているアルゴリズムです:

画像の説明が入力されています 画像の説明が入力されています

誰かが私の条件を理解するのを手伝ってくれるかもしれません

1) $ p \ leq k \ leq i $ の場合 $ a [k] \ leq x $ < / SPAN>

例えば、 $ p $ です。 class="math-container"> $ i $ $ 0 $ .... for Loopの前にi = p-1を持つ以来、この保持するのでしょうか。 / P>

2) $ i + 1 \ leq k \ leq j - 1 $ $ a [k]> X $

たとえば、アルゴリズムでは、最初にFORループを入力し、j= 1、 $ I $ が0になります。 tこれがどのように機能するかを見てください。

ありがとう

役に立ちましたか?

解決

$ p \ leq k \ leq i $ $ a [k] \ leq x。$ たとえば、 $ p $ の場合、アルゴリズムでは $ 1 $ $ i $ $ 0 $ .... forループの前にi = p-1

を持つ以来、このホールドはどのようになりますか。

$ i $ は常に $ p $ より常に小さいです。ループの開始、ループ内のステートメント " $ i= i + 1 $ "が実行される可能性があるため、大きくなる可能性があります。少なくとも $ k= p $ の場合、 $ i $ が増加しました。="math-container"> $ p \ le k \ le i $ 。

$ p \ le i $ が保持されていない、つまり $ k $ < / span> $ p \ le k \ le i $ 、条件 " $ p \ leq k \ leq i $ その後 $ a [k] \ leq x $ "を自動的に保持します。 (命名が偽の場合、何でも起こり得ることを思い出してください。)その条件を偽造するには、 $(p、k、i)$のインスタンスを見つける必要があります。 $ p \ leq k \ leq i $ $ a [k] \ gt x $ < /スパン>

今2番目のループ不変の場合を把握できるはずです。

他のヒント

私はコードrightnowを追跡する気分ではありませんが、uが[r]= xで始まり、[i]= x

で終わることを理解しています。

(最後の要素として選択されているように思われるピボットは、指定されたコードで$ R $ として選択されているようですが、リストの残りの部分が配置されていると正しい位置に達します。)

最初の一見すると、コードにいくつかのエラーがある可能性があります。その後、下括弧内の交換は必要ありません。 $ else $

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top