【科目B対策】配列を使って「最小値」を求めるアルゴリズムを理解する
基本情報技術者試験(科目B)では、
配列の中から「最大値」や「最小値」を求める処理が非常によく出題されます。
今回はその中でも、
「配列の中から最小値を探す」アルゴリズムに絞って、擬似コードと考え方を丁寧に整理します。
目次
サンプルデータ
まずは、処理対象となる配列を用意します。
A ← [ 7, 3, 9, 4, 2 ]
この配列の中で、最も小さい値(最小値)を求めるのが目的です。
考え方(重要)
最小値探索の基本的な考え方はとてもシンプルです。
- 最初の要素を「最小値候補」とする
- 配列の残りの要素を先頭から順に調べる
- 今の最小値より小さい値が見つかったら、最小値を更新する
- 最後まで調べ終えたら、その値が最小値
ポイントは、
👉 「比較しながら更新していく」 という流れです。
擬似コード(最小値探索)
基本情報技術者試験でよく使われる形式で書くと、次のようになります。
A ← [ 7, 3, 9, 4, 2 ]
N ← LENGTH(A)
MIN ← A[1]
for i ← 2 to N
if A[i] < MIN then
MIN ← A[i]
endif
endfor
print MIN
処理の流れを追ってみる
実際に、上のサンプルデータで動きを追ってみましょう。
| i | A[i] | 現在のMIN | 判定 | 更新後のMIN |
|---|---|---|---|---|
| 初期 | – | 7 | – | 7 |
| 2 | 3 | 7 | 3 < 7 | 3 |
| 3 | 9 | 3 | 9 < 3 × | 3 |
| 4 | 4 | 3 | 4 < 3 × | 3 |
| 5 | 2 | 3 | 2 < 3 | 2 |
最終的に、最小値は 2 になります。
よくある間違い
❌ すべての要素を比較対象にしていない
for i ← 1 to N
としてしまうと、
最初の要素を 自分自身と比較する 無駄な処理が含まれます。
👉 最小値を A[1] に設定した場合は
ループは 2 から始めるのが基本です。
❌ 初期値を0にしてしまう
MIN ← 0
これは 典型的な誤り です。
配列にすべて正の数が入っている場合、0より小さい値は出てこないため、
正しい最小値が求まりません。
👉 初期値は 必ず配列の要素から取る のが鉄則です。
試験対策としてのポイント
- 最大値探索と最小値探索は if条件が逆になるだけ
- > と < の違いを正確に見抜けるかが重要
- 配列の添字(1始まり)に注意
- 初期値の設定ミスは頻出の引っかけポイント
まとめ
- 最小値探索は 線形探索 の代表例
- 最初の要素を基準にして、順番に比較する
- 試験では「処理の流れを追えるか」が問われる
最大値バージョンとセットで理解しておくことで、科目Bのアルゴリズム問題はかなり楽になります。
訪問数 19 回, 今日の訪問数 19回


ディスカッション
コメント一覧
まだ、コメントがありません