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

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

配列を順番に処理するアルゴリズム」が頻出します。

その中でも最も基本で、かつ多くの問題の土台になるのが

配列の中から最大値を求めるアルゴリズムです。

今回は、

  • 配列とは何か
  • 最大値を求める基本的な考え方
  • 科目Bで使われる擬似コードの形
  • なぜこのアルゴリズムが重要なのか

を順番に整理します。


配列とは何か(おさらい)

配列とは、同じ種類のデータを番号(添字)付きで並べたものです。

例として、次のような配列を考えます。

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

この配列には、5個の整数が入っています。

  • A[1] = 7
  • A[2] = 3
  • A[3] = 9
  • A[4] = 4
  • A[5] = 6

※ 基本情報の擬似コードでは、添字が 1 から始まる点に注意しましょう。


最大値を求める基本的な考え方

最大値を求めるとき、人は次のように考えます。

  1. とりあえず「最初の値」を最大値だと思う
  2. 次の値と比べる
  3. もし大きければ、最大値を更新する
  4. これを最後まで繰り返す

重要なのは「全部を一気に比べない」ことです。

「今の最大値」と「次の要素」を、1つずつ比較します。


科目B風 擬似コードで書いてみる

では、科目Bでよく使われる擬似コード形式で書いてみます。

サンプル配列

A ← [ 7, 3, 9, 4, 6 ]
N ← LENGTH(A)

最大値を求めるアルゴリズム

MAX ← A[1]

for i ← 2 to N
  if A[i] > MAX then
    MAX ← A[i]
  endif
endfor

処理の流れを日本語で説明すると

  • 最初に A[1] を最大値 MAX とする
  • 2番目の要素から順に見ていく
  • もし A[i] が MAX より大きければ、MAX を更新する
  • 最後まで終わったとき、MAX に最大値が入っている

実際の比較の流れ(例)

比較対象MAXの値
初期値7
7 と 37
7 と 99
9 と 49
9 と 69

最終的に 最大値は 9 になります。


なぜこのアルゴリズムが重要なのか(科目B視点)

最大値のアルゴリズムは、単体で終わりません。

科目Bでは、次のような問題に発展します。

  • 最大値の 位置(添字) を求める
  • 最大値と最小値を同時に求める
  • 条件付きで最大値を探す
  • 最大値を使って別の処理を行う

つまり、

「配列を順番に見て、条件で更新する」

という考え方そのものが、科目Bの核になります。


初学者がつまずきやすいポイント

  • いきなり MAX ← 0 としてしまう→ 配列の値がすべて負の場合に破綻します
  • ループを 1 から始めてしまう→ A[1] を二重に比較することになります
  • 「最大値」と「最大値の位置」を混同する

これらは試験で狙われやすいポイントでもあります。


まとめ

  • 最大値探索は、科目Bアルゴリズムの基本中の基本
  • 「最初を基準にして、順番に比較する」が鉄則
  • 擬似コードは 処理の流れを読む力 が重要

このアルゴリズムが自然に読めるようになると、

科目Bの問題文に対する心理的ハードルが一気に下がります


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