配列とは
データ構造のひとつに、配列
があります。
配列は、要素番号
と要素
(データそのもの)で構成されています。
要素番号は添字(そえじ)
やインデックス
とも言い、必ず 0 から始まります。
また要素は、要素番号によって順序づけられています。
例: 配列 color
要素番号 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
要素 | red | white | pink | blue |
配列の表し方 | color[0] | color[1] | color[2] | color[3] |
1次元配列
上図のような、1列に要素が並んでいる配列を一次元配列
といいます。
多次元配列
要素が2列、3列と複数並ぶ配列は、多次元配列
といいます。
例: 配列 employee
要素番号 | → | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|---|
↓ | 要素↓→ | 経理 | 人事 | 営業 | システム | 海外事業 |
0 | 中途(男) | 2 | 3 | 9 | 5 | 7 |
1 | 中途(女) | 3 | 5 | 6 | 7 | 2 |
2 | 新卒(男) | 0 | 0 | 6 | 9 | 2 |
3 | 新卒(女) | 0 | 1 | 7 | 6 | 2 |
配列の表し方
要素番号 | → | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|---|
↓ | 要素↓→ | 経理 | 人事 | 営業 | システム | 海外事業 |
0 | 中途(男) | employee[0][0] | employee[0][1] | employee[0][2] | employee[0][3] | employee[0][4] |
1 | 中途(女) | employee[1][0] | employee[1][1] | employee[1][2] | employee[1][3] | employee[1][4] |
2 | 新卒(男) | employee[2][0] | employee[2][1] | employee[2][2] | employee[2][3] | employee[2][4] |
3 | 新卒(女) | employee[3][0] | employee[3][1] | employee[3][2] | employee[3][3] | employee[3][4] |
配列の特徴
- 要素のデータ型は同じ
- 添字によってデータ位置が特定される
- 要素数をあとから増やしたり減らしたりできない(= 静的データ構造)
配列の操作
配列に格納されたデータの操作方法は、大きく分けて以下の4つがあります。
- 探索(=目的のデータを探すこと)
- 更新
- 削除
- 挿入
また探索には、 直接探索
と線形探索
の2種類の方法があります。
直接探索
直接探索は、目的のデータが要素番号の何番の位置にあるのかわかっている場合に使われる探索法です。
例えば、配列:color の要素番号2番に目的のデータがある場合、color[2]
に直接アクセスして、更新・削除・挿入などを行います。
線形探索
線形探索は、目的のデータが要素番号の何番の位置にあるのかわからない場合に、最も単純な探索アルゴリズムとして使われる探索法です。
要素番号の小さいほう(または大きいほう)から順に、目的のデータを探します。
直接探索と線形探索の計算量
直接探索は、1回の照会処理で目的のデータにアクセスできるので、常にO(1)
(オーダー 1)です。
一方線形探索は、配列の要素数を n とすると、O(n)
(オーダー n)が計算量になります。
例えば5つの要素を持つの配列に対して、要素番号の小さいほうから順に探索していくとします。目的のデータが一番最後の要素番号にあった場合、照会処理を行う回数 = 配列要素の数
となります。よって計算量は、要素数であるO(5)
(オーダー 5)になるからです。
まとめ
- 配列には、
一次元配列
と多次元配列
がある - 配列の要素数は途中で変更できない
- 要素番号を指定して要素(データ)にアクセスする
- 直接探索は目的のデータの位置がわかる場合に使える
- 線形探索は、目的のデータの位置がわからない場合に使える