12_多次元配列

はじめに

これまで学習してきた配列は1次元配列でした。1次元配列は、複数の変数を横に並べてひとまとめにしたものです。これに対し、2次元配列は、1次元配列が縦に並んでいるイメージです。

例えば、座標データや表のような構造を表現したいときに、2次元配列が便利です。


1次元配列との違い

配列の種類 構造例 特徴
1次元配列 {1, 2, 3, 4} 一列に並んだデータ群
2次元配列 {{1, 2}, {3, 4}} 行と列の構造を持つ

要素のアクセス方法:

多次元配列の要素番号の表現は、どちらが1次元方向(横方向・行)、2次元方向(縦・列)かわからなくなることがあるかもしれません。

そんなときは何次元であっても最後の要素番号が1次元方向とおぼえておきましょう。


2次元配列の定義と初期化

整数型の2次元配列: data ← {{1, 2, 3}, {4, 5, 6}}

このように、内側の{}が各行のデータを表します。上記の配列は2行3列の配列です。


2次元配列のアクセス

整数型: value
value ← data[1, 2]  // 1行2列目の値を取り出す

応用例:表形式のデータ処理

整数型の2次元配列: score ← {{70, 80}, {60, 90}, {85, 75}}
整数型: i, j

for (i を 1 から 3 まで 1 ずつ増やす)
  for (j を 1 から 2 まで 1 ずつ増やす)
    score[i, j] を出力
  endfor
endfor

この例では、3人の生徒の2教科分の点数を表として処理しています。


理解度チェック問題

問題1

次の配列の定義において、data[2, 3]の値は?

整数型の2次元配列: data ← {{1, 2, 3}, {4, 5, 6}}

問題2

次のプログラムの出力結果として正しいものはどれか。

整数型の2次元配列: table ← {{1, 2}, {3, 4}}
整数型: sum ← 0
整数型: i

for (i を 1 から 2 まで 1 ずつ増やす)
  sum ← sum + table[i, 1]
endfor
sum を出力

問題3

次のコードは何をしているか。

整数型の2次元配列: mat ← {{1, 2}, {3, 4}}
整数型: tmp

tmp ← mat[1, 2]
mat[1, 2] ← mat[2, 1]
mat[2, 1] ← tmp

おわりに

2次元配列は、実世界の表や表計算に対応しやすい構造です。今後は、これを使ってアルゴリズムを作っていくことになります。複雑な処理を簡潔に表現するためにも、しっかり理解しておきましょう。