令和5年度 ITパスポート試験 問60
テクノロジ/アルゴリズム手続 printArray は,配列 integerArray の要素を並べ替えて出力する。手続 printArray を呼び出したときの出力はどれか。ここで,配列の要素番号は1から始まる。 〔プログラム〕 ○printArray() 整数型: n, m 整数型の配列: integerArray ← {2, 4, 1, 3} for (n を 1 から (integerArray の要素数 - 1) まで 1 ずつ増やす) for (m を 1 から (integerArray の要素数 - n) まで 1 ずつ増やす) if (integerArray[m] > integerArray[m + 1]) integerArray[m] と integerArray[m + 1] の値を入れ替える endif endfor endfor integerArray の全ての要素 を先頭から順にコンマ区切りで出力する
出典:令和5年度 ITパスポート試験 問60
- ア1,2,3,4
- イ1,3,2,4
- ウ3,1,4,2
- エ4,3,2,1
正解:ア
解説
このプログラムは,隣り合う要素を比べて,左が大きければ入れ替える操作を繰り返す並べ替え(バブルソート)です。配列 {2, 4, 1, 3} で追うと,n=1 のとき {2,4,1,3}→{2,1,4,3}→{2,1,3,4},n=2 のとき {1,2,3,4}(2 と 3 は入れ替えなし),n=3 のとき入れ替えなし,となり,昇順に並んだ 1,2,3,4 が出力されます。
選択肢ごとの解説
- ア正しい。バブルソートにより,最終的に昇順の 1,2,3,4 になります。
- イ誤り。n=2 の段階で 2 と 1 が入れ替わるため,1,3,2,4 の状態では終わりません。
- ウ誤り。配列は並べ替えられるので,元の並びに近い 3,1,4,2 にはなりません。
- エ誤り。降順になるのは,比較の向き(大小の条件)が逆の場合です。