ITパスポート模擬試験~令和5年度【問60】~

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

  • ア. 1,2,3,4
  • イ. 1,3,2,4
  • ウ. 3,1,4,2
  • エ. 4,3,2,1

【答え】ア

【解説】

この問題は、提示された手続 printArray() がどのように配列を並べ替えるかを読み取り、最終的に出力される配列を求める問題で、バブルソート(昇順)のアルゴリズムです。

まずは、プログラムの要点を確認しましょう。

  • 初期配列:integerArray ← {2, 4, 1, 3}(要素数は4つ
  • 要素番号は 1から始まる
  • 2重ループ内で、もし( integerArray[m] > integerArray[m+1] )なら入れ替え
    →m番目の要素とその右隣(m+1)の要素を比較して、左の要素の方が大きければ入れ替えるということ

1回目の外側ループ(n = 1)

mを1から3(=4-1)まで繰り返す

初期状態:{2, 4, 1, 3}

  • m = 1(1番目の要素と2番目の要素を比較):2 < 4 →入れ替えなし → {2, 4, 1, 3}
  • m = 2(2番目の要素と3番目の要素を比較):4 > 1 → 入れ替え → {2, 1, 4, 3}
  • m = 3(3番目の要素と4番目の要素を比較):4 > 3 →入れ替え → {2, 1, 3, 4}

2回目の外側ループ(n = 2)

mを1から2(=4-2)まで繰り返す

  • m = 1(1番目の要素と2番目の要素を比較):2 > 1 →入れ替え → {1, 2, 3, 4}
  • m = 2(2番目の要素と3番目の要素を比較):2 < 3 →入れ替えなし → {1, 2, 3, 4}

3回目の外側ループ(n = 3)

mを1から1(=4-3)まで繰り返す

  • m = 1(1番目の要素と2番目の要素を比較):1 < 2 →入れ替えなし {1, 2, 3, 4}

以上より、正解はア.となります。

間違えた人はこちらで復習

アルゴリズムとプログラミング1~アルゴリズムと流れ図(フローチャート)~

※本問は自分で考えて解く応用的な問題なので、用語の丸暗記のみでは対応できません。アルゴリズムが苦手な人はあまり時間をかけずに他の問題に移りましょう。