データ構造の配列(Opera(例)

⚡ スマートサマリー

データ構造の配列は、同じデータ型の複数の項目を連続したメモリ位置に格納し、それぞれにインデックスでアクセスできます。このチュートリアルでは、配列の概念、配列が重要な理由、配列の作成方法と操作方法について説明します。 Python, C++, Java 例を挙げて。

  • 📦 コア定義: 配列は、同じ型の複数の要素を隣接するメモリ領域に格納し、インデックスによってアクセスします。
  • ⚡ 高速アクセス: インデックスを使用すれば、どの要素も定数時間で取得できます。
  • 🛠️ 5 Operaション: 配列ツールキットには、挿入、削除、検索、更新、および走査機能が含まれています。
  • 🌐 言語間連携: Python 配列モジュールを使用します。 C++ (NAIST) と Java 配列を手動ロジックでネイティブに宣言する。
  • 🤖 AIとの関連性: 配列は、機械学習の計算を支えるテンソルや行列の基盤となるものです。

データ構造の配列(Opera(例)

データ構造における配列とは何ですか?

An 配列 は、類似したデータ型の複数のデータ項目を格納するためのデータ構造です。配列の項目は隣接するメモリ位置に割り当てられ、これらの位置は配列と呼ばれます。 要素は 配列の要素の総数は、配列の要素の総数です。 長さ.

各要素は位置によってアクセスされ、この参照は index or 添字.

配列の概念

配列の概念図

配列の概念図

上の図は、次のことを示しています。

  1. 配列は要素のコンテナです。
  2. 要素には、「ABC」、「TRUE」、「FALSE」などの特定の値とデータ型があります。
  3. 各要素にはそれぞれ固有のインデックスがあり、それを使って要素にアクセスします。

注意:

  • 要素は連続したメモリ位置に格納されます。
  • インデックスは常に配列項目の合計数より小さくなります。
  • 配列として宣言された変数は、複数の値を格納できます。
  • ほぼすべてのプログラミング言語は配列という概念を共有しているが、配列の宣言方法と初期化方法は異なっている。
  • すべての初期化において共通する3つの要素は、配列名、要素、および要素のデータ型である。

次の図は、宣言するための構文を示しています。 で配列 Python (NAIST) と C++これは、言語によって構文が若干異なっても、概念自体は変わらないことを示している。

配列の構文を理解する

配列の構文を理解する

  • 配列名: 要素のコレクションを簡単に参照するために必要です。
  • データ・タイプ: 型チェックとデータ整合性のために必要です。
  • 要素: 配列内に存在するデータ値。

配列が必要な理由とは?

  • 配列は、複数の値を単一の変数に格納するのに最適です。
  • それらは多くの値を容易かつ迅速に処理する。
  • 配列を使うと、値の並べ替えや検索が簡単になります。

配列の作成 Python

In Python配列はリストとは異なります。リストは異なるデータ型の項目を保持できますが、配列は同じデータ型の項目しか保持できません。 Python 配列を処理するための別のモジュールがあり、 array使用する前にインポートする必要があります。

注意: 配列には整数や浮動小数点数などの実数のみを含める必要があり、文字列は使用できません。

以下のコードは、 Python 口座残高を保存するには:

import array
balance = array.array('i', [300, 200, 100])
print(balance)

配列を宣言する方法 Python

配列は次のように宣言できます。 Python 以下の構文を使用して初期化する場合:

arrayName = array.array(typecode, [array_items])

配列の構文 Python

配列の構文 Python

  1. 識別子: 変数に通常行うのと同じように、名前を指定してください。
  2. モジュール: Python 最初にインポートする必要のある「array」という特別なモジュールがあります。
  3. 方法: 配列モジュールには、型コードと要素という2つの引数を取る、配列を初期化するためのメソッドがあります。
  4. タイプコード: 利用可能な型コードを使用してデータ型を指定します(下の表を参照)。
  5. 要素: 角括弧内に配列の要素を指定します。例: [130, 450, 103]。

以下の表は、サポートされているデータ型で使用可能な型コードの一覧です。

タイプコード Cタイプ Python タイプ 最小サイズ(バイト)
'b' 署名された文字 int型 1
「B」 符号なし文字 int型 1
「u」 Py_UNICODE Unicode文字 2
'h' 短い署名付き int型 2
「H」 未署名のショート int型 2
'私' 署名されたint int型 2
'私' unsigned int int型 2
「l」 長い署名 int型 4
「L」 署名なしlong int型 4
'f' フロート フロート 4
「d」 フロート 8

特定の配列値にアクセスするには?

配列の要素には、インデックスを使ってアクセスできます。

構文:

arrayName[indexNum]

例:

balance[1]

配列要素にアクセスする

配列要素にアクセスする

ここでは、インデックス1を使用して配列の2番目の値にアクセスしました。出力は200で、これはバランス配列の2番目の値です。

import array
balance = array.array('i', [300, 200, 100])
print(balance[1])

出力:

200

配列 Operaのイオン Python

その Python arrayモジュールは、配列操作のための個別の関数を提供します。これらの関数は破壊的な操作であり、変更内容は配列変数に保存されます。

インサート

この操作は、配列の先頭、末尾、または指定されたインデックスに1つ以上の項目を挿入します。引数として、インデックスと値の2つが必要です。

arrayName.insert(index, value)

例: インデックス1(値200)の直後に新しい値を挿入するには、挿入メソッドでインデックス2を参照します。

import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance)

出力:

array('i', [300, 200, 150, 100])

削除

この操作は、単一の引数を受け取り、配列から要素を1つ値で削除します。実行後、要素は再配置され、インデックスが再割り当てされます。

arrayName.remove(value)

例:

import array
balance = array.array('i', [300, 200, 150, 100])
balance.remove(150)
print(balance)

出力:

array('i', [300, 200, 100])

検索

この操作は値によって項目を検索し、そのインデックスを返します。非破壊的な方法であるため、配列の値を変更しません。

arrayName.index(value)

例:

import array
balance = array.array('i', [300, 200, 150, 100])
print(balance.index(150))

出力:

2

更新

更新は、単純な代入演算子を使用して、指定されたインデックスの既存の値を置き換えます。Python 配列には update() 方法。)

arrayName[index] = value

例: インデックス2の150を145に置き換えるには:

import array
balance = array.array('i', [300, 200, 150, 100])
balance[2] = 145
print(balance)

出力:

array('i', [300, 200, 145, 100])

トラバース

あなたは横断することができます Python ループを使用した配列:

import array
balance = array.array('i', [300, 200, 100])
for x in balance:
    print(x)

出力:

300
200
100

配列の作成 C++

C++ より柔軟です Python 配列を作成するとき。 C++ アレイ 3 つの方法で。次のコードは、整数配列を作成します。 C++ 口座残高を保存するには:

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  for (int i = 0; i < 3; i++)
    {
      cout << "value of i: " << balance[i] << endl;
    }
  return 0;
}

配列を宣言する方法 C++

プログラムの要件に応じて、配列を宣言する方法は3つあります。

サイズ別申告:

dataType arrayName[arraySize];   // e.g. int balance[3];

配列要素のみを使用した宣言:

dataType arrayName[] = {array_items};   // e.g. int balance[] = { 300, 200, 100 };

サイズ別・品目別の申告:

dataType arrayName[arraySize] = {array_items};   // e.g. int balance[3] = { 300, 200, 100 };

配列の特定の値にアクセスする方法 C++?

配列要素へのアクセス

配列要素へのアクセス

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  cout << balance[1];
  return 0;
}

出力:

200

配列 Operaのイオン C++

取消 Pythonで C++ 挿入、削除、検索、更新、および走査操作のロジックは、ご自身でプログラミングする必要があります。

インサート

挿入ロジックは次のとおりです。配列の要素をループ処理し、より大きなインデックスにシフトしてから、指定されたインデックスに新しい要素を追加します。以下の例では、5つの要素があり、値200の直後に150が挿入されます。

#include <iostream>
#include <stdio.h>

main() {
   int pos = 2;
   int size = 4;
   int balance[] = {300, 200, 100, 50, 0};

   printf("BEFORE INSERT:\n");
   for(int i = 0; i < 5; i++) {
      printf("%d\n", balance[i]);
   }

   /* SHIFT ITEMS TO A GREATER INDEX */
   for(int i = size; i >= pos; i--) {
       balance[i+1] = balance[i];
   }

   /* INSERT VALUE AT THE DESIRED INDEX */
   balance[pos] = 150;

   printf("AFTER INSERT:\n");
   for(int i = 0; i < 6; i++) {
      printf("%d\n", balance[i]);
   }
}

配列 Operaのイオン Java

プログラムを作成しましょう Java ユーザーから配列要素のサイズと値を受け取る。

import java.util.Scanner;

public class AddElements {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter the size of the array");
        int n = sc.nextInt();

        int arr[] = new int[n];

        System.out.println("Enter Elements in the array");
        for(int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        System.out.println("Elements in the array");
        for(int j = 0; j < n; j++) {
            System.out.print(arr[j] + " ");
        }
    }
}

要素を変更する Java 配列

インデックスに基づいて要素を更新する。

import java.util.Scanner;

public class ModifyElement {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        int length = arr.length;
        Scanner sc = new Scanner(System.in);

        System.out.println("Array Elements Before modify");
        for(int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }

        System.out.println("\nEnter the position to change");
        int pos = sc.nextInt();
        System.out.println("Enter the value");
        int val = sc.nextInt();

        arr[pos] = val;

        System.out.println("Array Elements After modify");
        for(int j = 0; j < length; j++) {
            System.out.print(arr[j] + " ");
        }
    }
}

要素へのアクセス Java 配列

配列を走査して、配列のすべての要素を出力します。

public class AccessElements {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        int length = arr.length;

        System.out.println("Array Elements are:-");
        for(int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

よくあるご質問

配列とは、同じデータ型の要素を連続したメモリ位置に格納したものです。各要素はインデックスによってアクセスされるため、配列は複数の関連値を効率的に格納および取得できます。

A Python リストは異なるデータ型の項目を格納できますが、配列(配列モジュールから取得)は単一のデータ型の項目を格納します。配列は、大量の数値データを扱う場合にメモリ効率が優れています。

基本的な操作は、挿入(項目を追加する)、削除(項目を削除する)、検索(値によって項目を検索する)、更新(インデックスの値を変更する)、および走査(すべての要素を走査する)の5つです。

インデックスによる要素へのアクセスは、メモリ アドレスがベース アドレスとインデックスから直接計算されるため、O(1)(定数時間)です。挿入と削除は、シフト演算のためO(n)となる場合があります。

連続した記憶領域を用いることで、プログラムはベースアドレスにインデックスと要素サイズを掛けた値を加えるだけで、任意の要素のアドレスを瞬時に計算できます。これが配列の高速かつ定数時間でのランダムアクセスを実現する仕組みです。

Python 配列モジュールが必要で、組み込みの操作方法を提供します。 C++ (NAIST) と Java 配列はネイティブに宣言できますが、挿入、削除、検索のロジックは自分でコーディングする必要があります。 Java 配列には長さプロパティも存在します。

配列は、AIで使用されるベクトル、行列、テンソルの基礎となるものです。NumPyやTensorFlowなどのライブラリは、高速な数値計算のために、トレーニングデータやモデルの重みを多次元配列として格納します。

はい。AIコーディングアシスタントは、オフバイワンや範囲外インデックスエラーを検出し、修正案を提示し、インデックスが配列の長さを超えた理由を説明します。ping 初心者でもよくある配列のバグを素早く解決できます。