配列と二次元配列(array / two-dimensional array)

分類
テクノロジ系 アルゴリズムとプログラミング
出る試験
ITパスポート基本情報応用情報
重要度
★★★★☆

同じ種類のデータを番号付きで並べた入れ物。番号が2つ必要な並べ方が二次元配列で、表の形になる。

もう少し詳しい説明

配列とは

配列は、同じ種類のデータを番号付きで並べた入れ物です。

A: [ 30 ][ 10 ][ 50 ][ 20 ]
     0     1     2     3    ← 番号(添字)

この番号を添字と呼びます。A の 2番の中身は 50 です。

できること速さ
番号を指定して中身を取り出す速い。どこを指しても同じ時間
途中に要素を割り込ませる遅い。後ろを全部ずらす必要がある
末尾に足す(空きがある場合)速い

番号から場所が計算できるので、何番目でも同じ速さで届きます。 配列が主記憶装置の上で連続した場所に置かれるためです。

添字が0から始まるか、1から始まるか

言語によって違います。

始まり言語の例要素が4個のときの添字
0からC、Java、Python0、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つの条件の組合せごとに値が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