令和5年度 春期 応用情報技術者試験 午前 問7
テクノロジアルゴリズム
この問題は2023(R5)春 応用情報技術者 午前に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
配列に格納されたデータ 2, 3, 5, 4, 1 に対して, クイックソートを用いて昇順に並べ替える。2回目の分割が終わった状態はどれか。ここで, 分割は基準値より小さい値と大きい値のグループに分けるものとする。また, 分割のたびに基準値はグループ内の配列の左端の値とし, グループ内の配列の値の順番は元の配列と同じとする。
解答・解説を読む
正解: 選択肢ア
クイックソートの分割手順
クイックソートは、基準値(ピボット)を選び、それより小さい値のグループと大きい値のグループに分割する操作を再帰的に繰り返す整列アルゴリズムです。
本問のルール:
- 基準値はグループ内の配列の左端の値
- 分割後の値の順番は、元の配列と同じ順序を保つ
【初期状態】
【1回目の分割】
対象:
- 基準値は左端の 。
- より小さい値のグループ:
- より大きい値のグループ: (元の順番を維持)
結果、これらを「小さい値」「基準値」「大きい値」の順に並べます。
1回目の分割後の状態:
この時点で、 と の2つのグループに分かれます。
【2回目の分割】
左側のグループ は要素数が1つのため、これ以上分割できません(整列済み)。
したがって、右側のグループ に対して2回目の分割を行います。
対象:
- 基準値は左端の 。
- より小さい値のグループ:なし
- より大きい値のグループ: (元の順番を維持)
結果、並べ替えても のままです。
全体の配列として見ると、状態は となります。
よって、2回目の分割が終わった状態は「ア」です。
各選択肢の解説
- ア: 正解。上記の手順通り、2回目の分割が終了した時点での正しい配列です。
- イ: 。2回目の分割で基準値を誤って処理した場合などの結果です。
- ウ: 。分割のルールや対象グループを誤って処理した結果です。
- エ: 。他の整列アルゴリズム(バブルソートなど)の途中経過と混同している可能性があります。