テーマ:クイックソートによる分割
正解はこちら
解答:ア
[基礎知識・用語のまとめ]
クイックソート・・・対象となるデータ列を基準に従って分割し、分割されたデータ列に対して同様の処理を繰り返してソートを行う方法です。分割統治法によるアルゴリズムの一つで、グループ分けや基準値の選び方にはいくつかの方法があり、通常の場合、プログラムでは再起呼び出しが用いられます。
[解法]
配列に格納されたデータ列を照準に並び替えるために、問題文にある次の三つの条件に従って、分割を進めます。
・分割は基準値より小さい値と大きい値のグループに分ける。
・基準値は分割のたびにグループ内の配列の左端の値とする。
・グループ内の配列の値の順番は元の配列と同じとする。
(初めの配列) 2 3 5 4 1 :基準となる値
(1回目の分割終了) 1|2|3 5 4
基準値2より小さい値(1)と大きい値(3,5,4)のグループに分けます。
(2回目の分割開始) 1|2|3 5 4
1、2は分割を終了し、(3,5,4)のグループに対して基準値を3として分割を行います。
(2回目の分割終了) 1|2|3|5 4
基準値3より小さい値はなく、大きい値(5, 4)のグループだけを分けます。
したがって、(2回目の分割終了)の状態のデータ列は、1、2、3、5、4となり、選択肢「ア」が正解となります。
[参考]
最後までやった場合は以下のようになる、、、らしい。
(3回目の分割開始) 1|2|3|5 4
1、2、3は分割を終了し、(5、4)のグループに対して、基準値を5として分割を行います。
(3回目の分割終了) 1|2|3|4|5
基準値5より小さい値(4)を分けると全てのデータに対する分割が終了し、昇順に並べ替えられたことがわかります。
利用させていただきました素材へのリンク
うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw
コメント