ITパスポート 令和8年度 問67
アルゴリズムとプログラミング
整列に関する問題
手続sortは,要素数が2以上の整数型の配列を引数numberArrayで受け取り,その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために,処理の途中でjの値とworkArrayの全ての要素を出力する。配列numberArrayを{3, 5, 1, 2, 4}とし,手続sortをsort(numberArray)として呼び出したとき,jの値が3と出力された直後のworkArrayの全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。
〔プログラム〕
○sort(整数型の配列: numberArray)
整数型: minIndex, j, k
整数型の配列: workArray ← numberArray // 配列の複製を作る
for (j を 1 から (workArray の要素数 - 1) まで 1 ずつ増やす)
// j番目から末尾までの要素の中で最も小さい値をもつ要素の要素番号を
// 一つ求める
minIndex ← j
for (k を (j + 1) から workArray の要素数 まで 1 ずつ増やす)
if (workArray[k] が workArray[minIndex] より小さい)
minIndex ← k
endif
endfor
workArray[j] と workArray[minIndex] の値を入れ替える
// 動作確認のために,jの値とworkArrayの全ての要素を出力する
jの値を出力する
workArray の全ての要素 を先頭から順にコンマ区切りで出力する
endfor
workArray の全ての要素 を先頭から順にコンマ区切りで出力する- ア 1,2,3,4,5
- イ 1,2,3,5,4
- ウ 4,5,3,2,1
- エ 5,4,3,2,1
答えと解説
✓ これが正解イ 1,2,3,5,4
解説
jが3のときは入替えが起きず、1,2,3,5,4です。
この手続は、j番目から末尾までの中でいちばん小さい値を探し、それをj番目と入れ替えることを繰り返して、小さい順に並べます。配列は3,5,1,2,4から始まります。jが1のときは1番目から5番目の中で最小の1を選び、1番目と入れ替えて1,5,3,2,4になります。jが2のときは2番目から5番目の中で最小の2を選び、2番目と入れ替えて1,2,3,5,4になります。jが3のときは3番目から5番目の3,5,4のうち最小は先頭の3なので、入れ替える相手が自分自身になり、並びは変わりません。よってjの値が3と出力された直後の出力は1,2,3,5,4です。 3,5,1,2,4 → j=1:1,5,3,2,4 → j=2:1,2,3,5,4 → j=3:1,2,3,5,4
ほかの選択肢の解説
- ア 1,2,3,4,5:すべて並べ終えた後の並びです。jが4のときに5と4を入れ替えて初めてこの形になるので、jが3の時点ではまだ末尾の二つが入れ替わっていません。並べ終えた形を答えてしまうと、途中の様子を問われていることを見落とします。
- ウ 4,5,3,2,1:正しい時点の並びを、そのまま後ろから前へ読んだものです。この手続は先頭から順に小さい値を置いていくので、出力も先頭から順に並びます。並びを後ろから読み直すという操作は、この手続のどこにも書かれていません。
- エ 5,4,3,2,1:大きい順に並べた場合の並びです。この手続は、より小さい値を見つけたときに入れ替える向きで書かれているので、小さい順に整列していきます。入れ替える条件を、より大きい値を見つけたときに変えれば、この並びになります。
関連用語
- プログラムコンピュータへの命令をまとめたもの。
- 手続呼び出すと中の処理を最後まで実行し、呼んだ側の次の行へ戻る処理のまとまりである。
- 配列要素を連続した領域に並べて格納する入れ物で、添字から場所を計算して直接参照できます。
- 引数呼び出す側と呼び出される側の間で受け渡すデータです。
出典:令和8年度 ITパスポート試験 問67(改変:原典の図表をテキストに書き起こした)
解説の最終確認:2026-11-04
解説は当サイト独自のもので、IPA(独立行政法人情報処理推進機構)とは関係ありません。
関連問題
- 令和8年度 問88:
正六角形に 関する 問題 (プログラム) - 令和8年度 問85:
素数に 関する 問題 (引数) - 令和8年度 問62:
ベンチマークテストに 関する 記述 (プログラム) - 令和6年度 問62:
配列に 関する 問題 (配列) - 令和5年度 問69:
配列に 関する 問題 (配列)
同じ分野の問題
誤りを見つけたら報告する