CO-S31|情報Ⅰ 対策問題
次のプログラムは配列の最小値を求める。空欄【ア】に入るものはどれか。 (1) Data = [7, 3, 9, 5] (2) saisho = Data[0] (3) i を 1 から 3 まで 1 ずつ増やしながら繰り返す: (4) | もし 【ア】 ならば: (5) ⎿ ⎿ saisho = Data[i] (6) 表示する(saisho)
解答・解説を見る
正解: 1
正答
1
この問題のポイント
最小値を求める条件式の穴埋め を問う問題です。「暫定値より小さければ更新」と不等号の向きがカギです。
解説
最小値を求めるアルゴリズムは、最大値の場合と同じ「勝ち抜き戦」の発想です。まず先頭の要素を暫定の最小値としてsaishoに入れ、残りの要素を順に見て、暫定値より小さいものが現れたらsaishoを更新します。全要素を見終わったとき、saishoに残っているのが本当の最小値です。よって条件は Data[i] < saisho です。
Data = [7, 3, 9, 5] でトレースして確かめます。
- (2)で saisho = Data[0] = 7(暫定最小値)
- i=1: Data[1]=3。3 < 7 は真 → saisho = 3 に更新
- i=2: Data[2]=9。9 < 3 は偽 → 更新しない
- i=3: Data[3]=5。5 < 3 は偽 → 更新しない
- (6)で3を表示 → 確かに最小値
最大値を求めるプログラム(条件は Data[i] > saidai)とは、不等号の向きが違うだけで構造は完全に同じです。「最大は >、最小は <」とペアで覚え、両方をトレースで確認しておくと混同しなくなります。
共通テストでは、この条件式の穴埋めに「不等号が逆の選択肢」が必ず並びます。迷ったら小さな配列で1〜2回トレースし、「更新されるべき場面で本当に条件が真になるか」を確かめるのが確実な見分け方です。
選択肢の確認
1.○ 暫定最小値より小さいときに更新するのが最小値の求め方。
2.× Data[i] > saisho は最大値を求めるときの条件。
3.× 等しいときに同じ値で更新しても結果は変わらない。
4.× iは添字(位置の番号)で、値との比較には意味がない。
ここだけは覚えよう
最小値は「暫定値より小さければ更新」 — 最大は > で最小は <。不等号の向きだけの違い。