定義
アレイ(配列)は、同じタイプを有するデータのセットを記憶するために連続したメモリ空間のセットを使用するリニアテーブル構造です。
この定義にはいくつかのキーワードがあります。
リニアテーブル
データテーブルは、ライン構造のイメージングとして直線状の列と呼ばれます。すなわち、すなわち、最初と最後のデータ要素に加えて、他のデータ要素はエンドツーエンドであり、テーブル内のデータ要素間の線形関係が一対一の関係です。
含むリニア・テーブル:テーブルと配列リンクリスト
アドレスシーケンステーブルは、待ち行列、スタック、およびその他で実現アレイまたはアレイとして、素子内部に連続して
次のようにポインタによって互いに接続され連続していないアドレスリストノード:
リニアテーブルを具体的に参照して説明することができる線状
表チームのコンセプトリニアリニアテーブルは、描画など、バイナリツリー、スタックとして、料金です。これは、非線形テーブルと呼ばれ、以下のような非線形データテーブルの中で、コンテキストの一つではないからです。
同じタイプの連続したメモリ領域を、&
この制限は、定義に基づいており、したがってアレイはオフセット先頭アドレス(BASE_ADDRESS)に対して計算されるの要素のみを必要とすることが、簡単に要素のアドレスを計算することができます。
int型intの4配列の長さ[] ARR =新しいINT [ 4]; ケース。アレイを初期化するとき、コンピュータは、下に示すように、第1のアドレスは、BASE_ADDRESS = 1000であり、1000〜1015に割り当てられたメモリ空間ARR連続配列を与えます。
各コンピュータは、物理アドレスがメモリ内のデータにアクセスするコンピュータ次に、メモリセルの物理アドレスが割り当てられます。コンピュータは、アレイ内の要素にアクセスする必要がある場合、メモリ要素のアドレスを計算するために、以下の式によって対処することができるされています。
arr[i]_address = base_address + i * data_type_size
data_type_size_が4バイトであるので、私は、標準的な、第一のアドレスのBASE_ADDRESS表す、data_type_size_は、int型のJavaの配列に格納されているように、メモリサイズの各要素を表すへのアクセスに必要な要素を表します。
アレイの基本操作
- 挿入
- 削除
- 検索操作
挿入
2例のインサートがあります。
在数组的末尾插入元素
操作は、任意の要素の位置を移動させることなく、端部に挿入された場合、直接最後の配列要素缶内の新しい位置を追加します。したがって、データの時間複雑性配列の挿入端部は、O(1)であります
在数组头部插入元素。
要素がヘッド位置に挿入され、データメモリの連続性を維持するために、すべてのデータが順次バックいずれかを移動させる必要があるとされている場合は、最悪の場合の時間複雑度はO(N)であります
削除
あなたは、メモリの連続性を維持するためには、Kの位置のデータ配列を削除する場合とと同様の要素を挿入し、あなたが前方に1移動され、最後の要素の位置K + 1が必要です。また、2例
删除数组末尾元素
最高の時間計算量はO(1)
删除数组头部元素
最悪時間計算量はO(n)があります
ランダムアクセス
我々は既に配列内の要素のインデックスを知っている場合、我々は、直接そのようなすでに添字2 [10、15、23、45]配列に番号23を知っていると仮定したように、インデックスを介して要素にアクセスすることができ、我々は[2] 23を指すようにすることができますので、直接ARR。従って、ランダムアクセスタイムの複雑性配列はO(1)であります
検索操作
我々は最初から最後まで、添字の数であるが、アレイ内の各要素を横断するために必要とされる要素23わからないので、23があるかどうかを見つける我々は[10、15、23、45]配列する必要があるとし、そしてこれは、23に等しいか否かを判定する。
次のようにコードは次のようになります。
for (let index = 0; index < array.length; index++) {
if(element === array[index]) {
return index;
}
}
したがって、時間の複雑さを見つけるために、配列の要素はO(N)であります