Pythonでアルゴリズム「クイック・ソート」(5):もはや定番ですね!!交換アルゴリズム
はい、本日もクイックソートの続きです~。前回記事までで「3つのWhileループ」を理解しました~(外側ループの処理すべてをまだ紹介していませんけれども)😆。
そして今回は、その直下にあるIf文を華麗にスルーしまして、つぎのコードに移ります。あ、もちろん、If文には後ほど戻ってきますからご心配なく。
本日取り組むコードは、下図の赤枠内です。
「見覚えありますよ!この3つの文のパターン😄」
でしょ、でしょ!でも、一応、確認していきましょう。一歩一歩前に進んでいくのが大事ですからね!
LeftとRightが決まったあとにすることは?
まず、いま私たちがどこにいるのか、確認しましょう。そう、交換する対象が決まったのでした。
data[left]は、左のグループ内で最初に発見されたピボットより大きい値です。一方で、data[right]は、右のグループ内で最初に発見されたピボットより小さい値です。
これらの値を確定させたら、どうします?
「交換します!画像に書いてありますから!😉」
ほんとだ、書いてあった…って、読んで答えてないでください😅。はい、おっしゃるとおり、交換します。交換するといえば、「交換アルゴリズム」ですね~。以前の記事で紹介しました!基本アルゴリズムは、こうやって何度も登場するんですね…。覚えてます?
「覚えてません!😆」
言い切った!?では、再確認しましょう。
交換アルゴリズムをさらりと復習
ではでは、下図の赤枠内をじっと見てみましょう。代入を三回繰り返しているのが分かります。tmpというのは、「数値を一時的に保管する場所」です。
1行目は、data[left]の値をtmpに移動させています。
2行目は、data[right]の値をdata[left]に代入しています。
3行目は、tmpの値をdata[right]に代入しています。
これで、交換ができました~♪。値を上書きして失われることがないように、tmpのような「仮の保管場所」を作るのでしたね!
これでdata[left]とdata[right]の交換ができました!少しだけですが、数値の並びが昇順に近づきましたね。
今日はここまでにしましょう。次回は、外側ループ内「While true」の最後の処理を見てみましょう。
では、ビーダゼーン!
※私のやる気アップとブログの品質向上につながりますので、記事が気に入られた方は、「ポチっ」と好きボタンを押してくださったり、フォローいただけますと、私が喜びます!🙇。
この記事が気に入ったらサポートをしてみませんか?