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 の全ての要素を先頭から順にコンマ区切りで出力する
整数型: 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」です。
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズムとプログラミング
解説 :
このプログラムは「バブルソート」という整列アルゴリズムで,配列の要素を小さい順(昇順)に並べ替えます。仕組みは「隣り合う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」です。