Data-structures-algorithms-array-data-structure
データ構造とアルゴリズム-配列
配列は、一定数のアイテムを保持できるコンテナであり、これらのアイテムは同じタイプである必要があります。 ほとんどのデータ構造は、配列を使用してアルゴリズムを実装します。 以下は、配列の概念を理解するための重要な用語です。
- 要素-配列に格納されている各項目は要素と呼ばれます。
- インデックス-配列内の要素の各位置には、要素を識別するために使用される数値インデックスがあります。
配列表現
配列は、さまざまな言語でさまざまな方法で宣言できます。 例として、C配列の宣言を見てみましょう。
配列は、さまざまな言語でさまざまな方法で宣言できます。 例として、C配列の宣言を見てみましょう。
上記の図に従って、考慮すべき重要な点を次に示します。
- インデックスは0で始まります。
- 配列の長さは10です。つまり、10個の要素を格納できます。
- 各要素には、そのインデックスを介してアクセスできます。 たとえば、インデックス6の要素を9としてフェッチできます。
基本操作
以下は、配列によってサポートされる基本的な操作です。
- Traverse -すべての配列要素を1つずつ印刷します。
- 挿入-指定されたインデックスに要素を追加します。
- 削除-指定されたインデックスの要素を削除します。
- 検索-指定されたインデックスを使用して、または値で要素を検索します。
- Update -指定されたインデックスの要素を更新します。
Cでは、配列がサイズで初期化されると、次の順序で要素にデフォルト値が割り当てられます。
Data Type | Default Value |
---|---|
bool | false |
char | 0 |
int | 0 |
float | 0.0 |
double | 0.0f |
void | |
wchar_t | 0 |
トラバース操作
この操作は、配列の要素をトラバースすることです。
例
次のプログラムは、配列の要素を走査して出力します。
#include <stdio.h>
main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
出力
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
挿入操作
挿入操作は、1つ以上のデータ要素を配列に挿入することです。 要件に基づいて、配列の先頭、末尾、または任意のインデックスに新しい要素を追加できます。
ここでは、配列の最後にデータを追加する挿入操作の実用的な実装を確認します-
例
以下は、上記のアルゴリズムの実装です-
#include <stdio.h>
main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
n = n + 1;
while( j >= k) {
LA[j+1] = LA[j];
j = j - 1;
}
LA[k] = item;
printf("The array elements after insertion :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
出力
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
The array elements after insertion :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 10
LA[4] = 7
LA[5] = 8
配列挿入操作のその他のバリエーションリンク:/data_structures_algorithms/array_insertion_algorithm [ここをクリック]
削除操作
削除とは、配列から既存の要素を削除し、配列のすべての要素を再編成することです。
アルゴリズム
*LA* は *N* 要素の線形配列であり、 *K* は *K <= N* のような正の整数であると考えてください。 LAのK ^ th ^位置で使用可能な要素を削除するアルゴリズムは次のとおりです。
1. Start
2. Set J = K
3. Repeat steps 4 and 5 while J < N
4. Set LA[J] = LA[J + 1]
5. Set J = J+1
6. Set N = N-1
7. Stop
例
以下は、上記のアルゴリズムの実装です-
#include <stdio.h>
void main() {
int LA[] = {1,3,5,7,8};
int k = 3, n = 5;
int i, j;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
j = k;
while( j < n) {
LA[j-1] = LA[j];
j = j + 1;
}
n = n -1;
printf("The array elements after deletion :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
出力
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
The array elements after deletion :
LA[0] = 1
LA[1] = 3
LA[2] = 7
LA[3] = 8
検索操作
値またはインデックスに基づいて配列要素の検索を実行できます。
アルゴリズム
*LA* は *N* 要素の線形配列であり、 *K* は *K <= N* のような正の整数であると考えてください。 以下は、順次検索を使用してITEMの値を持つ要素を見つけるアルゴリズムです。
1. Start
2. Set J = 0
3. Repeat steps 4 and 5 while J < N
4. IF LA[J] is equal ITEM THEN GOTO STEP 6
5. Set J = J +1
6. PRINT J, ITEM
7. Stop
例
以下は、上記のアルゴリズムの実装です-
#include <stdio.h>
void main() {
int LA[] = {1,3,5,7,8};
int item = 5, n = 5;
int i = 0, j = 0;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
while( j < n){
if( LA[j] == item ) {
break;
}
j = j + 1;
}
printf("Found element %d at position %d\n", item, j+1);
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
出力
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
Found element 5 at position 3
更新操作
更新操作とは、特定のインデックスで配列から既存の要素を更新することです。
アルゴリズム
*LA* は *N* 要素の線形配列であり、 *K* は *K <= N* のような正の整数であると考えてください。 以下は、LAのK ^ th ^位置で利用可能な要素を更新するアルゴリズムです。
1. Start
2. Set LA[K-1] = ITEM
3. Stop
例
以下は、上記のアルゴリズムの実装です-
#include <stdio.h>
void main() {
int LA[] = {1,3,5,7,8};
int k = 3, n = 5, item = 10;
int i, j;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
LA[k-1] = item;
printf("The array elements after updation :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
出力
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
The array elements after updation :
LA[0] = 1
LA[1] = 3
LA[2] = 10
LA[3] = 7
LA[4] = 8