令和5年度 ITパスポート 問60 解説|擬似言語 並べ替えの出力

ITパスポート 公開問題の解説令和5年度 問60最終更新 2026-10-19

分類テクノロジ系 » アルゴリズムとプログラミング » アルゴリズムとプログラミング新しい試験範囲外(2027年度からの新しい試験には出ない分野)年度令和5年度の100問の一覧

手続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 の全ての要素 を先頭から順にコンマ区切りで出力する
正解と解説

正解:ア

ア○ 正解 隣どうしで左が大きいときに入れ替えるので、最後は小さい順の 1,2,3,4 になります。

イ× 1,3,2,4 は 3 と 2 が逆の並びです。途中の並びは 2,1,4,3 → 2,1,3,4 → 1,2,3,4 で、この並びは一度も出てきません。

ウ× 値 1,2,3,4 が元の配列で何番目にあったか(1は3番目、2は1番目、3は4番目、4は2番目)を並べたものです。出力するのは要素番号ではなく値です。

エ× 大きい順の並びです。左が小さいときに入れ替える条件ならこうなりますが、このプログラムは左が大きいときに入れ替えます。

解説

このプログラムは、隣どうしの要素を比べて、左が右より大きければ入れ替えます。内側の for を1周すると、まだ並んでいない範囲で最も大きい値が右端まで運ばれます。外側の for で範囲を1つずつ縮めながらこれを繰り返す並べ替えを、バブルソートと呼びます。1周ごとに残りの最大値が右端に決まっていくので、最後は小さい順に並ぶことになります。

実際に追うと次のとおりです。

初め:2,4,1,3
n=1(m は 1〜3)
m=1:2 と 4 → そのまま → 2,4,1,3
m=2:4 と 1 → 入れ替え → 2,1,4,3
m=3:4 と 3 → 入れ替え → 2,1,3,4
n=2(m は 1〜2)
m=1:2 と 1 → 入れ替え → 1,2,3,4
m=2:2 と 3 → そのまま → 1,2,3,4
n=3(m は 1 だけ)
m=1:1 と 2 → そのまま → 1,2,3,4
出力:1,2,3,4

if の比較が「左>右なら入れ替える」なので、並びは小さい順(昇順)になります。

教科書 g37この問題の知識

アルゴリズムとプログラミング

アルゴリズムは問題を解くための手順で、順次・選択・繰返しの3つで組み立てます。流れ図と擬似言語の読み方、変数の値を書き出すトレース、空欄の埋め方、線形探索と2分探索、選択ソート・バブルソート・クイックソートと併合までを、公開問題を解ける形でまとめます。

教科書を読む →同じ分野の過去問を続けて解く(アルゴリズムとプログラミング 17問)

ITパスポートのUdemy講座を口コミで比べる。動画講座3つ・問題集3つ、受講者数・★評価・口コミつき。広告を含むページですITパスポートのUdemy講座を口コミで比べる。動画講座3つ・問題集3つ、受講者数・★評価・口コミつき。広告を含むページです

Udemy の ITパスポート講座を、受講者数・★評価・口コミで比べたページです(広告を含みます)。

過去問教科書の一覧(現行の試験の順)教科書の一覧(新しい試験の順)

出典:IPA「ITパスポート試験 公開問題」令和5年度 問60。問題文と選択肢は改変せずに引用しています(表・図は文字に書き起こしたもの)。正解は IPA 公表の解答例によります。

タイトルとURLをコピーしました