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.

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:

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.


???? 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). ????

???? 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.

???? 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]

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.

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?

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 …

???? 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. ????

⚠️ 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? ????

Î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. ⏳

???? 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.

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.

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

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

???? 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).




???? Î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. ????