【科目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つずつ比較します。
科目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 と 3 | 7 |
| 7 と 9 | 9 |
| 9 と 4 | 9 |
| 9 と 6 | 9 |
最終的に 最大値は 9 になります。
なぜこのアルゴリズムが重要なのか(科目B視点)
最大値のアルゴリズムは、単体で終わりません。
科目Bでは、次のような問題に発展します。
- 最大値の 位置(添字) を求める
- 最大値と最小値を同時に求める
- 条件付きで最大値を探す
- 最大値を使って別の処理を行う
つまり、
「配列を順番に見て、条件で更新する」
という考え方そのものが、科目Bの核になります。
初学者がつまずきやすいポイント
- いきなり MAX ← 0 としてしまう→ 配列の値がすべて負の場合に破綻します
- ループを 1 から始めてしまう→ A[1] を二重に比較することになります
- 「最大値」と「最大値の位置」を混同する
これらは試験で狙われやすいポイントでもあります。
まとめ
- 最大値探索は、科目Bアルゴリズムの基本中の基本
- 「最初を基準にして、順番に比較する」が鉄則
- 擬似コードは 処理の流れを読む力 が重要
このアルゴリズムが自然に読めるようになると、
科目Bの問題文に対する心理的ハードルが一気に下がります。
訪問数 3 回, 今日の訪問数 3回


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