配列と二次元配列(array / two-dimensional array)
同じ種類のデータを番号付きで並べた入れ物。番号が2つ必要な並べ方が二次元配列で、表の形になる。
もう少し詳しい説明
配列とは
配列は、同じ種類のデータを番号付きで並べた入れ物です。
A: [ 30 ][ 10 ][ 50 ][ 20 ]
0 1 2 3 ← 番号(添字)
この番号を添字と呼びます。A の 2番の中身は 50 です。
| できること | 速さ |
|---|---|
| 番号を指定して中身を取り出す | 速い。どこを指しても同じ時間 |
| 途中に要素を割り込ませる | 遅い。後ろを全部ずらす必要がある |
| 末尾に足す(空きがある場合) | 速い |
番号から場所が計算できるので、何番目でも同じ速さで届きます。 配列が主記憶装置の上で連続した場所に置かれるためです。
添字が0から始まるか、1から始まるか
言語によって違います。
| 始まり | 言語の例 | 要素が4個のときの添字 |
|---|---|---|
| 0から | C、Java、Python | 0、1、2、3 |
| 1から | 試験の擬似言語、一部の言語 | 1、2、3、4 |
応用情報と基本情報の擬似言語では、断りがなければ添字は1から始まります。 問題文に「添字は0から始まる」と書かれていれば、そちらに従います。
ここを取り違えると、答えが1つずれます。 問題を読むとき、最初に確かめるところです。
二次元配列
番号が2つ必要な並べ方です。表の形になります。
B: 列1 列2 列3 列4
行1 [ 0 ][ 0 ][ 0 ][ 0 ]
行2 [ 0 ][ 1 ][ 1 ][ 1 ]
行3 [ 0 ][ 1 ][ 2 ][ 2 ]
B[2, 3] は、2行目3列目の値で、1です。
| 項目 | 一次元配列 | 二次元配列 |
|---|---|---|
| 添字の数 | 1つ | 2つ |
| 形 | 1列の並び | 表 |
| 要素の個数 | 長さ | 行数 × 列数 |
何に使うのか
- 表そのものを扱う(成績表、座席表)
- 画像(縦横に並んだ点の明るさ)
- 2つのものの組合せの結果を記録する(動的計画法の表)
「2つの条件の組合せごとに値が1つ決まる」ものが、二次元配列に向きます。
ふちの行と列
動的計画法の表では、0行目と0列目(または1行目と1列目)を値が無い状態として用意することがあります。
| 用意する理由 | 中身 |
|---|---|
| 「左上のます」を参照する式が、表の外に出ないようにする | ふちに0を入れておく |
ふちを1つ余分に取ると、場合分けが減ります。 表の大きさが(m+1)×(n+1)になっているときは、この形です。
リスト構造との違い
| 配列 | リスト構造 | |
|---|---|---|
| 置き方 | 連続した場所に並べる | ばらばらの場所に置き、つながりを記録する |
| 番号での取り出し | 速い | 遅い。先頭から順にたどる |
| 途中への割り込み | 遅い。後ろをずらす | 速い。つながりを書き換えるだけ |
| 大きさの変更 | 決めた大きさを超えにくい | 増やしやすい |
どちらが良いとは決まっていません。 番号で取り出す回数が多いなら配列、途中の出し入れが多いならリスト構造、という選び方になります。
試験ではこう出る
科目A(旧・午前)では、要素数の計算と、配列とリスト構造の向き不向きが問われます。
午後や応用情報では、擬似言語の中で表として出てきます。 設問は「このときの B[3, 4] の値」のような形です。
添字が何から始まるかを問題文で先に確かめてください。 ここが1つずれると、たどった先の値が全部ずれます。
関連する用語
- リスト構造
- 並べ方が違う入れ物。途中への追加は得意で、番号での取り出しは苦手
- 動的計画法
- 表を埋める解き方。その表の入れ物が二次元配列
- 主記憶装置
- 配列が実際に置かれる場所。番号から位置が計算できる理由がここにある
ミニクイズ
添字が0から始まる二次元配列 A が、縦3行・横4列で宣言されている。A の要素の個数はいくつか。
正解は 1番:12個
二次元配列の要素の個数は、行の数と列の数をかけた値になります。3行4列なので3×4で12個です。添字が0から始まる場合、行の添字は0から2、列の添字は0から3の範囲になりますが、個数そのものは変わりません。足し算にすると7になりますが、表のますの数は縦と横のかけ算で求めます。
この分野をまとめて解く → アルゴリズムとプログラミングのミニテスト(全44問)
最終更新:2026-11-09