Cunoașteți structurile de date pe care le utilizați în fiecare zi.

???? Bine ai venit! Să începem cu un context vital. Lasă-mă să te întreb:
✅ Ascultați muzică pe smartphone?
✅ Păstrați o listă de contacte pe telefon?
✅ Ați văzut vreodată un clasament în timpul unei competiții?

Dacă răspunsul dvs. este „da” la oricare dintre aceste întrebări, atunci este aproape sigur că ați folosit matricele și nici nu le știați! ???? Tablourile sunt structuri de date foarte puternice care stochează liste de elemente. Au aplicații nesfârșite. Ele sunt foarte importante în lumea informaticii.

În acest articol, veți afla avantajele și dezavantajele matricilor, structura acestora, operațiunile și cazurile de utilizare.

Sa incepem! ????

Scufundare profundă în structura de bază a matricelor

Pentru a înțelege cum funcționează, este foarte util să vizualizați memoria computerului dvs. ca o grilă, la fel ca cea de mai jos. Fiecare informație este stocată într-unul dintre acele elemente mici (pătrate) care fac grila.

Structuri de date 101 matrici o introducere vizuala pentru

Matrice profitați de această structură de „grilă” pentru magazin liste de informații conexe în locații de memorie adiacente pentru a garanta o eficiență extremă pentru găsirea acestor valori. ????????????????

Vă puteți gândi la tablouri de genul acesta:

1611657908 337 Structuri de date 101 matrici o introducere vizuala pentru

Elementele lor sunt una lângă alta în memorie. Dacă trebuie să accesați mai multe dintre ele, procesul este extrem de optimizat, deoarece computerul dvs. știe deja unde se află valoarea.

Minunat, nu? Să învățăm cum funcționează acest lucru în culise! ????

???? Clasificare

Tablourile sunt clasificate ca Structuri de date omogene pentru că ei magazin elemente de același tip.

Pot stoca numere, șiruri, valori booleene (adevărate și false), caractere, obiecte și așa mai departe. Dar odată ce ați definit tipul de valori pe care matricea dvs. le va stoca, toate elementele sale trebuie să fie de același tip. Nu puteți „amesteca” diferite tipuri de date.

1611657908 354 Structuri de date 101 matrici o introducere vizuala pentru
1611657908 944 Structuri de date 101 matrici o introducere vizuala pentru

???? Citirea valorilor – începe magia!

Puterea uimitoare a matricilor provine de la ei eficiența accesării valorilor. Acest lucru se realizează datorită structurii sale asemănătoare rețelei. Să aruncăm o privire mai detaliată asupra acestui aspect

Când creați o matrice, veți:
– Atribuiți-o unei variabile. ????
– Definiți tipul de elemente pe care le va stoca. ????
– Definiți dimensiunea acestuia (numărul maxim de elemente). ????

1611657908 91 Structuri de date 101 matrici o introducere vizuala pentru

???? Notă: Numele pe care îl atribuiți acestei variabile este foarte important, deoarece îl veți folosi mai târziu în codul dvs. pentru a accesa valorile și pentru a modifica tabloul.

Dar cum puteți spune computerului la ce valoare anume doriți să accesați? Aici indicii au un rol vital!

1️⃣ Indici

Folosești ceea ce se numește „index” („Indici” la plural) pentru a accesa o valoare dintr-o matrice. Acesta este un număr care se referă la locația în care este stocată valoarea.

După cum puteți vedea în diagrama de mai jos, primul element din matrice este menționat folosind indexul 0. Pe măsură ce vă deplasați mai departe spre dreapta, indicele crește cu unul pentru fiecare spațiu din memorie.

1611657908 941 Structuri de date 101 matrici o introducere vizuala pentru

???? Notă: Știu că la început pare ciudat să începi să numeri de la 0 în loc de 1, dar asta se numește Numerotare bazată pe zero. Este foarte frecvent în informatică.

Sintaxa generală pentru a accesa un element este: <ArrayVariable>[<index>]

De exemplu:
Dacă matricea dvs. este stocată în variabilă myArray și doriți să accesați primul element (la index 0), pe care l-ați folosi myArray[0]

1611657908 315 Structuri de date 101 matrici o introducere vizuala pentru

2️⃣ Memorie

Acum, că știți cum să accesați valorile, să vedem cum sunt stocate matricele în memoria computerului. Când definiți dimensiunea matricei, tot acel spațiu din memorie este „rezervat” din acel moment pentru valorile viitoare pe care poate doriți să le inserați.

???? Notă: Dacă nu umpleți matricea cu valori, spațiul respectiv va fi păstrat rezervat și gol până când faceți acest lucru.

De exemplu:
Să presupunem că definiți o matrice de dimensiunea 5, dar inserați o singură valoare. Tot spațiul rămas va fi gol și „rezervat” în memorie, în așteptarea viitoarelor misiuni.

1611657908 502 Structuri de date 101 matrici o introducere vizuala pentru

Acest lucru este esențial, deoarece matricele sunt extrem de eficiente în accesarea valorilor, deoarece toate elementele sunt stocate în spații adiacente din memorie. În acest fel, computerul știe exact unde să caute pentru a găsi informațiile pe care le-ați solicitat.

Dar… există un dezavantaj ???? pentru că acesta este nu eficientă din punct de vedere al memoriei. Rezervați memorie pentru operațiuni viitoare care ar putea să nu aibă loc. Acesta este motivul pentru care tablourile sunt recomandate în situațiile în care știți în prealabil câte elemente aveți de gând să stocați.

???? Operațiuni – În culise!

Acum, că știți ce sunt matricile atunci când sunt utilizate și cum stochează elemente, ne vom scufunda în operațiunile lor, cum ar fi inserarea și eliminarea.

1️⃣ Inserare – Bine ați venit!

Să presupunem că avem o matrice de dimensiunea 6 și că există încă un spațiu gol. Vrem să inserăm un element „e” la începutul matricei (index 0), dar acest loc este deja luat de elementul „a”. Ce ar trebui sa facem?

1611657908 361 Structuri de date 101 matrici o introducere vizuala pentru

Pentru a insera în tablouri, mutăm toate elementele situate în dreapta site-ului de inserare, un index în dreapta. Elementul „a” va fi acum la indexul 1, elementul „b” va fi la indexul 2 și așa mai departe …

1611657908 784 Structuri de date 101 matrici o introducere vizuala pentru

???? Notă: Va trebui să creați o variabilă pentru a urmări ultimul index care conține elemente. În diagrama de mai sus, matricea este completată până la indexul 4 înainte de inserare. În acest fel, puteți determina dacă matricea este plină și ce index ar trebui să utilizați pentru a insera un element la sfârșit.

După ce faceți acest lucru, elementul nostru este inserat cu succes. ????

1611657908 23 Structuri de date 101 matrici o introducere vizuala pentru

⚠️ Așteptați un minut! Ce se întâmplă dacă matricea este plină?

Ce crezi că se va întâmpla dacă matricea este plină și încercați să inserați un element? ????

1611657908 541 Structuri de date 101 matrici o introducere vizuala pentru

În acest caz, trebuie să creați o nouă matrice mai mare și să copiați manual toate elementele în această nouă matrice. Această operațiune este foarte scump, în timp. Imaginați-vă ce s-ar întâmpla dacă ați avea o matrice cu milioane de elemente! Acest lucru ar putea dura foarte mult până la finalizare. ⏳

1611657908 576 Structuri de date 101 matrici o introducere vizuala pentru

???? Notă: Singura excepție de la această regulă, atunci când inserarea este foarte rapidă, este atunci când introduceți un element în Sfârșit a matricei (la indexul situat în dreapta ultimului element) și încă mai este spațiu disponibil. Acest lucru se face în timp constant O (1).

2️⃣ Ștergere – Pa, pa!

Acum să spunem că doriți să ștergeți un element din matrice.

1611657908 616 Structuri de date 101 matrici o introducere vizuala pentru

Pentru a menține eficiența accesului aleatoriu (putând accesa matricea printr-un index extrem de rapid) elementele trebuie stocate în spații contigue de memorie. Nu puteți șterge doar elementul și lăsați spațiul gol.

1611657908 596 Structuri de date 101 matrici o introducere vizuala pentru

Ar trebui să mutați elementele care vin după elementul pe care doriți să îl ștergeți un index la stânga.

1611657908 461 Structuri de date 101 matrici o introducere vizuala pentru

Și, în cele din urmă, aveți această matrice rezultată ????. După cum puteți vedea, „b” a fost șters cu succes.

1611657908 654 Structuri de date 101 matrici o introducere vizuala pentru

???? Notă: Ștergerea este foarte eficientă atunci când eliminați fișierul ultimul element. Deoarece trebuie să creați o variabilă pentru a urmări ultimul index care conține elemente (în diagrama de mai sus, indexul 3), puteți elimina direct acel element folosind indexul.

3️⃣ Găsirea unui element

Aveți trei opțiuni pentru a găsi un element într-o matrice:

  • Dacă știi unde se află, utilizați indexul.
  • Dacă nu știți unde se află și datele dvs. sunt sortate, puteți utiliza algoritmi pentru a vă optimiza căutarea, cum ar fi Căutare binară.
  • Dacă nu știți unde se află și datele dvs. nu sunt sortate, va trebui să căutați fiecare element din matrice și să verificați dacă elementul curent este elementul pe care îl căutați (vă rugăm să consultați secvența diagramelor de mai jos).
1611657908 751 Structuri de date 101 matrici o introducere vizuala pentru
1611657909 710 Structuri de date 101 matrici o introducere vizuala pentru
1611657909 943 Structuri de date 101 matrici o introducere vizuala pentru
1611657909 959 Structuri de date 101 matrici o introducere vizuala pentru

???? În rezumat …

  • Tablourile sunt structuri de date extrem de puternice care stochează elemente de același tip. Tipul de elemente și dimensiunea tabloului sunt fixe și definite atunci când îl creați.
  • Memoria este alocată imediat după ce tabloul este creat și este gol până când atribuiți valorile.
  • Al lor elementele sunt situate în locații adiacente din memorie, deci pot fi accesate foarte eficient (acces aleatoriu, O (1) = timp constant) folosind indicii.
  • Indicii încep de la 0, nu 1 așa cum suntem obișnuiți.
  • Inserarea elementelor la începutul sau în mijlocul matricei implică mutarea elementelor spre dreapta. Dacă matricea este plină, creăm o matrice nouă, mai mare (care nu este foarte eficientă). Introducerea la sfârșitul matricei este un timp constant foarte eficient O (1).
  • Eliminarea elementelor de la început sau de la mijlocul matricei implică mutarea tuturor elementelor spre stânga pentru a evita lăsarea unui spațiu gol în memorie. Acest lucru garantează că elementele sunt stocate în spații adiacente din memorie. Eliminarea la sfârșitul matricei este foarte eficientă, deoarece ștergeți doar ultimul element.
  • Pentru a găsi un element, trebuie să verificați întreaga matrice până când o găsiți. Dacă datele sunt sortate, puteți utiliza algoritmi precum Binary Search pentru a optimiza procesul.

„Învață de ieri, trăiește pentru azi, speră pentru mâine. Important este să nu încetezi interogarea ”.

– Albert Einstein

???? Mulțumesc!

Sper cu adevărat că ți-a plăcut articolul meu. ❤️
Urmărește-mă Stare de nervozitate pentru a găsi mai multe articole ca acesta. ????