Matrice în structura de date (Operațiuni)

⚡ Rezumat inteligent

În structura datelor, un tablou stochează mai multe elemente de același tip de date în locații de memorie contigue, fiecare accesibil printr-un index. Acest tutorial explică conceptul, de ce sunt importante tablourile și cum se creează și se operează cu ele. Python, C++ și Java cu exemple.

  • 📦 Definiția de bază: Un tablou conține mai multe elemente de același tip în memoria adiacentă, accesate prin index.
  • Acces rapid: Orice element este recuperat în timp constant folosind indexul său.
  • 🛠️ Cinci Operaacțiuni: Inserarea, ștergerea, căutarea, actualizarea și parcurgerea setului de instrumente de matrice.
  • 🌐 Multilingvistică: Python folosește modulul array; C++ și Java declară tablouri nativ cu logică manuală.
  • 🤖 Relevanța IA: Matricele stau la baza tensorilor și matricilor care alimentează calculele de învățare automată.

Matrice în structura de date (Operațiuni)

Ce este Array în Data Structure?

An mulțime este o structură de date pentru stocarea mai multor elemente de date de un tip de date similar. Elementele unui tablou sunt alocate la locații de memorie adiacente, iar aceste locații sunt numite element al tabloului. Numărul total de elemente dintr-un tablou este lungime.

Fiecare element este accesat prin poziția sa, iar această referință se numește index or indicele.

Conceptul de matrice

Diagrama conceptuală a tablourilor

Diagrama conceptuală a tablourilor

Diagrama de mai sus ilustrează faptul că:

  1. Un tablou este un container de elemente.
  2. Elementele au o valoare și un tip de date specifice, cum ar fi „ABC”, TRUE sau FALSE.
  3. Fiecare element are propriul index, care este folosit pentru accesarea acestuia.

Notă:

  • Elementele sunt stocate în locații de memorie adiacente.
  • Un index este întotdeauna mai mic decât numărul total de elemente ale matricei.
  • Orice variabilă declarată ca o matrice poate stoca mai multe valori.
  • Aproape toate limbajele de programare au același concept de tablouri, dar diferă prin modul în care le declară și le inițializează.
  • Trei părți rămân comune pentru toate inițializările: numele matricei, elementele și tipul de date al elementelor.

Următoarea diagramă prezintă sintaxa pentru declararea unui matrice în Python și C++, demonstrând că conceptul rămâne același chiar dacă sintaxa variază ușor între limbi.

Înțelegeți sintaxa matricelor

Înțelegeți sintaxa matricelor

  • Nume matrice: necesar pentru o referire ușoară la colecția de elemente.
  • Tipul de date: necesar pentru verificarea tipului și a integrității datelor.
  • elemente: valorile datelor prezente în matrice.

De ce avem nevoie de matrice?

  • Tablourile sunt ideale pentru stocarea mai multor valori într-o singură variabilă.
  • Acestea procesează multe valori ușor și rapid.
  • Sortarea și căutarea valorilor sunt mai ușoare cu ajutorul tablourilor.

Crearea unui Array în Python

In Python, tablourile diferă de liste: o listă poate conține elemente de tipuri de date diferite, în timp ce un tablou poate conține doar elemente de același tip de date. Python are un modul separat pentru gestionarea tablourilor, numit array, pe care trebuie să îl importați înainte de a-l utiliza.

Notă: Tabloul trebuie să conțină numere reale, cum ar fi numere întregi și numere cu număr în virgulă; șirurile de caractere nu sunt permise.

Următorul cod creează o matrice de numere întregi în Python pentru a stoca soldurile conturilor:

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

Modalități de a declara o matrice în Python

Puteți declara o matrice în Python în timp ce îl inițializezi folosind următoarea sintaxă:

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

Sintaxa Array în Python

Sintaxa Array în Python

  1. Identificator: specificați un nume așa cum faceți de obicei pentru variabile.
  2. Modul: Python are un modul special numit „array” pe care trebuie să îl importați mai întâi.
  3. Metodă: Modulul array are o metodă de inițializare a array-ului, primind două argumente — typecode și elemente.
  4. Cod tip: specificați tipul de date folosind codurile de tip disponibile (consultați tabelul de mai jos).
  5. elemente: specificați elementele matricei între paranteze pătrate, de exemplu [130, 450, 103].

Tabelul de mai jos listează codurile de tip disponibile pentru tipurile de date acceptate.

Codul de tip C Tip Python Tip Dimensiune minimă (octeți)
'b' semnat char int 1
„B” char nesemnat int 1
'tu' Py_UNICODE Caracter Unicode 2
'h' semnat scurt int 2
„H” scurt nesemnat int 2
'I' semnat int int 2
'I' nesemnat int int 2
'l' semnat lung int 4
„L” nesemnat mult int 4
'F' pluti pluti 4
'd' dubla pluti 8

Cum se accesează o anumită valoare a unui array?

Puteți accesa orice element al unui array folosind indexul său.

Sintaxă:

arrayName[indexNum]

Exemplu:

balance[1]

Accesați un element de matrice

Accesați un element de matrice

Aici, am accesat a doua valoare a matricei folosind indexul 1. Rezultatul este 200, care este a doua valoare a matricei de echilibru.

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

ieșire:

200

Mulțime Operațiuni în Python

Python Modulul array oferă funcții separate pentru operațiunile cu array-uri. Acestea sunt metode distructive, ceea ce înseamnă că modificarea este salvată în variabila array.

Insera

Această operație inserează unul sau mai multe elemente într-un array la începutul, sfârșitul sau orice index dat. Așteaptă două argumente: index și valoare.

arrayName.insert(index, value)

Exemplu: Pentru a insera o nouă valoare imediat după indexul 1 (valoarea 200), faceți referire la indexul 2 în metoda de inserare.

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

ieșire:

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

Șterge

Această operație șterge un element dintr-un array după valoare, acceptând un singur argument. După executare, elementele sunt rearanjate și indexurile sunt reatribuite.

arrayName.remove(value)

Exemplu:

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

ieșire:

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

Căutare

Această operație caută un element după valoare și returnează indexul său. Este o metodă nedistructivă, deci nu modifică valorile matricei.

arrayName.index(value)

Exemplu:

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

ieșire:

2

Actualizează

Actualizarea înlocuiește valoarea existentă la un index dat folosind un operator de atribuire simplu. (Python matricele nu au un update() metodă.)

arrayName[index] = value

Exemplu: Pentru a înlocui 150 (la indexul 2) cu 145:

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

ieșire:

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

Traverse

Puteți traversa a Python matrice folosind o buclă:

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

ieșire:

300
200
100

Crearea unui Array în C++

C++ este mai flexibil decât Python atunci când creați matrice. Puteți crea C++ matrice în trei moduri. Următorul cod creează o matrice de numere întregi în C++ pentru a stoca soldurile conturilor:

#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;
}

Modalități de a declara o matrice în C++

Puteți declara un array în trei moduri, în funcție de cerințele programului.

Declarație după mărime:

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

Declarație doar cu elemente de matrice:

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

Declarație pe mărime și articole:

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

Cum se accesează o anumită valoare a matricei în C++?

Accesarea unui element de matrice

Accesarea unui element de matrice

#include <iostream>
using namespace std;

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

ieșire:

200

Mulțime Operațiuni în C++

Spre deosebire de Python, În C++ Trebuie să programați singur logica pentru operațiunile de inserare, ștergere, căutare, actualizare și traversare.

Insera

Logica de inserare este: parcurgerea elementelor din matrice, mutarea lor la un index mai mare, apoi adăugarea unui element nou la indexul dat. Exemplul de mai jos are cinci elemente și inserează 150 imediat după valoarea 200.

#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]);
   }
}

Mulțime Operațiuni în Java

Să creăm un program în Java care acceptă dimensiunea și valorile elementelor tabloului de la utilizator.

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] + " ");
        }
    }
}

Modificarea unui element într-un Java Mulțime

Actualizează un element după indexul său.

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] + " ");
        }
    }
}

Elemente de acces într-un Java Mulțime

Afișează toate elementele tabloului parcurgându-l.

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] + " ");
        }
    }
}

Întrebări frecvente

Un tablou este o colecție de elemente de același tip de date stocate în locații de memorie contigue. Fiecare element este accesat printr-un index, ceea ce face ca tablourile să fie eficiente pentru stocarea și regăsirea mai multor valori corelate.

A Python O listă poate conține elemente de diferite tipuri de date, în timp ce o matrice (din modulul matrice) conține elemente de un singur tip de date. Matricele sunt mai eficiente din punct de vedere al memoriei pentru seturi mari de date numerice.

Cele cinci operații de bază sunt inserare (adăugarea unui element), ștergere (eliminarea unui element), căutare (găsirea unui element după valoare), actualizare (modificarea unei valori la un index) și traversare (vizitarea fiecărui element).

Accesarea unui element prin index este O(1) — timp constant — deoarece adresa de memorie este calculată direct din adresa de bază și index. Inserarea și ștergerea pot fi O(n) datorită deplasării.

Stocarea contiguă permite programului să calculeze instantaneu adresa oricărui element din adresa de bază plus indexul înmulțit cu dimensiunea elementului. Acest lucru oferă matricelor accesul aleatoriu rapid, în timp constant.

Python necesită modulul matrice și oferă metode de operare încorporate. C++ și Java declară nativ tablouri, dar necesită să programați singur logica de inserare, ștergere și căutare. Java Matricele expun și o proprietate de lungime.

Tablourile stau la baza vectorilor, matricelor și tensorilor utilizați în inteligența artificială. Biblioteci precum NumPy și TensorFlow stochează datele de antrenament și modelează ponderile sub formă de tablouri multidimensionale pentru calcul numeric rapid.

Da. Asistenții de codare bazați pe inteligență artificială detectează erorile de indexare de tip „off-by-one” și „out of bounds”, sugerează remedieri și explică de ce un index a depășit lungimea matricei.ping începătorii rezolvă rapid erorile comune ale matricelor.

Rezumați această postare cu: