問題
問60
手続 printArray は、配列 integerArray の要素を並べ替えて出力する。手続 printArray を呼び出したときの出力はどれか。ここで、配列の要素番号は1から始まる。

- 1,2,3,4
- 1,3,2,4
- 3,1,4,2
- 4,3,2,1
[出典:ITパスポート試験 令和5年度 問60]
スポンサーリンク
正解
正解は「ア」です。
解説
この問題のプログラムは、「バブルソート」というソートアルゴリズムを用いて配列を昇順に並べ替える処理を行います。バブルソートは隣り合う要素を比較しながら、小さいものを前に移動させる方式であり、最も基本的なソートアルゴリズムの一つです。
初期状態の配列は {2, 4, 1, 3} です。バブルソートの処理をステップごとに見ていきます。
- 1回目のループ(n=1) {2, 4, 1, 3} → {2, 1, 4, 3} → {2, 1, 3, 4}
- 2回目のループ(n=2) {2, 1, 3, 4} → {1, 2, 3, 4}
- 3回目のループ(n=3) {1, 2, 3, 4}(すでにソート済みなので変化なし)
このように、最終的な配列の並びは {1, 2, 3, 4}となるため、正解は「ア」となります。
イ(1,3,2,4):
バブルソートの基本的な動作に従うと、この並びにはなりません。
ウ(3,1,4,2):
これは初期状態とも異なり、バブルソートの動作結果とも一致しません。
エ(4,3,2,1):
これは降順の並びであり、バブルソートの結果とは異なります。
難易度
やや易しい
バブルソートの基本的な仕組みを理解していれば解答できる問題です。プログラムを一行ずつトレースする力が必要ですが、アルゴリズムの基本に沿った出題のため、比較的容易な問題といえます。
スポンサーリンク
用語補足
バブルソート:
隣り合う要素を比較しながら、より小さい値を前方へ移動させることでリストをソートするアルゴリズムです。処理のたびに最大の要素が末尾に移動するため、泡(バブル)が上がるような動作に見えることからこの名前がついています。
ソートアルゴリズム:
データを特定の順序(昇順や降順)に並べ替える処理のことです。代表的なソートには「バブルソート」「クイックソート」「マージソート」などがあります。
対策
- バブルソートのアルゴリズムを理解し、実際に手を動かしてトレースできるようにする。
- 他のソートアルゴリズム(選択ソート、クイックソートなど)と比較し、それぞれの特徴を理解する。
- プログラムを読み解く力をつけるために、条件分岐やループ処理の流れを整理しながら考える練習を行う。