見出し画像

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」の最後の処理を見てみましょう。

では、ビーダゼーン!

※私のやる気アップとブログの品質向上につながりますので、記事が気に入られた方は、「ポチっ」と好きボタンを押してくださったり、フォローいただけますと、私が喜びます!🙇。


この記事が気に入ったらサポートをしてみませんか?