ITパスポート試験 - 令和5年 - 問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 の全ての要素を先頭から順にコンマ区切りで出力する
1,2,3,4
1,3,2,4
3,1,4,2
4,3,2,1
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズムとプログラミング
解説
このプログラムは「バブルソート」という整列アルゴリズムで,配列の要素を小さい順(昇順)に並べ替えます。仕組みは「隣り合う2つの要素を比べて,左の方が大きければ入れ替える」という操作を繰り返すものです。

初期状態は {2,4,1,3} です。外側のループ(nが1~3)の中で,内側のループ(mが1~要素数-n)を回し,integerArray[m] > integerArray[m+1] なら値を交換します。

n=1: (2,4)は交換不要→(4,1)は交換して{2,1,4,3}→(4,3)は交換して{2,1,3,4}
n=2: (2,1)は交換して{1,2,3,4}→(2,3)は交換不要
n=3: (1,2)は交換不要

このように,大きい値が少しずつ後ろに送られていき,最終的に配列は完全に昇順に並び替わります。結果は {1,2,3,4} となり,コンマ区切りで出力されるため,正解は「ア」の「1,2,3,4」です。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる