令和5年度 春期 ITストラテジスト試験 システムアーキテクト試験 ネットワークスペシャリスト試験 ITサービスマネージャ試験 情報処理安全確保支援士試験 午前Ⅰ 問題【共通】 問3
配列に格納されたデータ 2, 3, 5, 4, 1 に対して,クイックソートを用いて昇順に並べ替える。2回目の分割が終わった状態はどれか。ここで,分割は基準値より小さい値と大きい値のグループに分けるものとする。また,分割のたびに基準値はグループ内の配列の左端の値とし,グループ内の配列の値の順番は元の配列と同じとする。
解答・解説
正解: ア. 1, 2, 3, 5, 4
クイックソートにおける分割処理の過程を順を追って確認します。
クイックソートは、配列から基準値を選び、それより「小さいグループ」と「大きいグループ」に分割する操作を再帰的に繰り返すアルゴリズムです。本問では「基準値はグループ内の左端の値」「グループ内の値の順番は元の配列と同じ」というルールに従います。
1回目の分割
- 初期状態: 2, 3, 5, 4, 1
- 基準値: 左端の
2 - 小さいグループ:
1 - 大きいグループ:
3, 5, 4(元の順番のまま) - 1回目の分割後の状態: 1, 2, 3, 5, 4
2回目の分割
次に、要素数が2以上のグループである 3, 5, 4 に対して分割を行います(左側の 1 は要素数が1つなので分割終了です)。
- 対象グループ: 3, 5, 4
- 基準値: 左端の
3 - 小さいグループ: なし
- 大きいグループ:
5, 4(元の順番のまま) - 2回目の分割後の状態: 1, 2, 3, 5, 4
2回目の分割が終わった時点でも配列の並びは 1, 2, 3, 5, 4 のままとなります。
各選択肢の解説
- ア: 2回目の分割終了時の状態と一致するため、正解です。
- イ: 要素の順番がルール(元の配列と同じ順番を保つ)に反しています。
- ウ: 1回目の分割が正しく行われておらず、基準値による大小の振り分けが不適切です。
- エ: 1回目の分割で
1が右端に残っており、基準値に対する大小の振り分けが正しく行われていません。