問題
次の擬似言語プログラムで、配列arr = [5, 2, 8, 1, 9, 3]に対して実行した後の変数maxの値はいくつか。 整数型: max ← arr[0] 整数型: i for (i を 1 から arr の要素数−1 まで 1 ずつ増やす) if (arr[i] > max) max ← arr[i] endif endfor
選択肢
- 1ア 1
- 2イ 5
- 3ウ 8
- 4エ 9
正解
4. エ 9
詳しい解説を見る解説を閉じる
解説
正解はエ。配列の最大値を求める典型アルゴリズムである。maxを先頭要素arr[0]=5で初期化し、i=1以降の各要素と比較して大きければ更新する。トレースすると、i=1:2>5は偽で更新なし。i=2:8>5は真でmax=8。i=3:1>8は偽。i=4:9>8は真でmax=9。i=5:3>9は偽。よって最終的にmax=9となる。アの1は最小値、イの5は初期値のまま更新されないと誤読した場合、ウの8は途中経過の値で最後まで走査しなかった場合の誤りである。最大値探索は「先頭要素で初期化→残りを順に比較・更新」という形が定石で、不等号を逆(<)にすれば最小値探索になる。科目Bの基本パターンとして、比較演算子の向きと初期化のしかたを確実に押さえたい。
一問一答
科目A 180問+科目B 60問