Quantcast
Channel: 配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 834

【データ構造 chapter1】配列

$
0
0

配列とは

データ構造のひとつに、配列があります。
配列は、要素番号要素(データそのもの)で構成されています。

要素番号は添字(そえじ)インデックスとも言い、必ず 0 から始まります。
また要素は、要素番号によって順序づけられています。

例: 配列 color

要素番号0123
要素redwhitepinkblue
配列の表し方color[0]color[1]color[2]color[3]

1次元配列

上図のような、1列に要素が並んでいる配列を一次元配列といいます。

多次元配列

一次元配列以外に、配列の中にさらに配列が入っているものがあります。これらを多次元配列といいます。

以下は二次元配列の例です。

例: 二次元配列 employee

要素番号01234
要素↓→経理人事営業システム海外事業
0中途(男)23957
1中途(女)35672
2新卒(男)00692
3新卒(女)01762

二次元配列の表し方

要素番号01234
要素↓→経理人事営業システム海外事業
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)になるからです。

更新の操作

目的のデータに対して、新しいデータを上書きする。以上!

削除の操作

目的のデータより大きい要素番号の要素をひとつずつ左にずらしていく。
配列の要素数は途中で変えることができないので、最後らへんの余ってしまった要素番号の要素には無関係なデータを格納する。

無関係なデータとは、その配列で扱っていない数値や文字列のこと。(例えば 「社員数の配列」であれば0以上の数値を扱うので、無関係なデータは -999 などになる。)

挿入の操作

目的のデータを挿入したい位置よりも、大きい要素番号の要素をひとつずつ右にずらしていく。

まとめ

  • 配列には、一次元配列多次元配列がある
  • 配列の要素数は途中で変更できない
  • 要素番号を指定して要素(データ)にアクセスする
  • 直接探索は目的のデータの位置がわかる場合に使える
  • 線形探索は、目的のデータの位置がわからない場合に使える

Viewing all articles
Browse latest Browse all 834

Trending Articles