オーケーの理解を助ける....パーティションを使用して、リスト内のK番目の最小の要素を見つける - 私はいくつかの異なる方法を使用して、リスト内のK番目の最小の要素を見つけるための割り当てを持っている私は
第一の方法は、リストをソートすることですK番目に小さい要素を返します。
「第2のアルゴリズムはにある:簡単に、私の考え方は
次の方法はクイックソートのパーティションを使用して、リスト= 10個の要素、昇順にソートリストは、その後、10番目の位置に要素を返すと言っていますこの手順では、Quicksortで使用されている「Partition」プロシージャを適用します。このプロシージャは、ピボットアイテムよりも小さいすべての要素が配列内に来るように配列を分割し、そのピボットアイテムより大きなすべての要素が後に来るようにします。ピボットアイテムがk番目のスロットに入るまで分割することでSelection Problemを解くことができます。これは、kがピボットポジションよりも小さい場合は左のサブアレイを再帰的に分割し、右のサブアkがピボットポジションより大きい場合はay。 K = pivotposition、我々が完了したら「
私は10項目のリストを持っていると言う:
3 8 9 2 4 1 7 10 6、5は旋回された状態で..私を知っています希望は、通常、2つの配列
3 2 4 1及び8 9 7 10 6
を持っていますが、私は理解していないことはあるでしょう:ピボット項目がであるまで、「我々は、パーティショニングによって選択問題を解決することができますk番目のスロット」。
k番目のスロットは何ですか?私はkth =配列の長さを考えていますので、この場合は10です。これは明らかに最低ではない6の値を持ちますが、正しいものではありません。
誰かがこのサンプル配列を使用できますが、このアルゴリズムの意味とkth/smallest要素の検索方法を教えてください。ありがとう
あなたが定義した_k_ midway:first _k_は、検索された要素の順序です(potentiall yは配列の長さよりも短い。 10要素配列から2番目に小さい要素は、1から数えてk = 2とし、配列の長さを_k_とします。 k番目のスロットは配列のk番目の位置にあります。 –
何か誤解を解消しても大丈夫ですが、私はまだ混乱しています。私が与えたサンプル配列について言えば、私は3番目に小さい要素を見つけたいとしましょう、ピボットは常に最初の項目です。私は "what"が配列まで3番目に小さい要素を知る方法を理解していないと思います完全にソートされていますか?私はそれを私のために表示する人が必要だと思うので、私は理解しています。 – user1189352
kがピボットポジションよりも小さいか大きいかはどうすれば分かりますか? – user1189352