【科目B対策】配列を使って「最小値」を求めるアルゴリズムを理解する

基本情報技術者試験(科目B)では、

配列の中から「最大値」や「最小値」を求める処理が非常によく出題されます。

今回はその中でも、

「配列の中から最小値を探す」アルゴリズムに絞って、擬似コードと考え方を丁寧に整理します。


サンプルデータ

まずは、処理対象となる配列を用意します。

A ← [ 7, 3, 9, 4, 2 ]

この配列の中で、最も小さい値(最小値)を求めるのが目的です。


考え方(重要)

最小値探索の基本的な考え方はとてもシンプルです。

  1. 最初の要素を「最小値候補」とする
  2. 配列の残りの要素を先頭から順に調べる
  3. 今の最小値より小さい値が見つかったら、最小値を更新する
  4. 最後まで調べ終えたら、その値が最小値

ポイントは、

👉 「比較しながら更新していく」 という流れです。


擬似コード(最小値探索)

基本情報技術者試験でよく使われる形式で書くと、次のようになります。

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

処理の流れを追ってみる

実際に、上のサンプルデータで動きを追ってみましょう。

iA[i]現在のMIN判定更新後のMIN
初期77
2373 < 73
3939 < 3 ×3
4434 < 3 ×3
5232 < 32

最終的に、最小値は 2 になります。


よくある間違い

❌ すべての要素を比較対象にしていない

for i ← 1 to N

としてしまうと、

最初の要素を 自分自身と比較する 無駄な処理が含まれます。

👉 最小値を A[1] に設定した場合は

ループは 2 から始めるのが基本です。


❌ 初期値を0にしてしまう

MIN ← 0

これは 典型的な誤り です。

配列にすべて正の数が入っている場合、0より小さい値は出てこないため、

正しい最小値が求まりません。

👉 初期値は 必ず配列の要素から取る のが鉄則です。


試験対策としてのポイント

  • 最大値探索と最小値探索は if条件が逆になるだけ
  • > と < の違いを正確に見抜けるかが重要
  • 配列の添字(1始まり)に注意
  • 初期値の設定ミスは頻出の引っかけポイント

まとめ

  • 最小値探索は 線形探索 の代表例
  • 最初の要素を基準にして、順番に比較する
  • 試験では「処理の流れを追えるか」が問われる

最大値バージョンとセットで理解しておくことで、科目Bのアルゴリズム問題はかなり楽になります。


訪問数 19 回, 今日の訪問数 19回