Ce sunt structurile de date?
Structura de date este o unitate software care vă permite să salvați și să procesați o mulțime de aceleași informații sau informații legate în mod logic în dispozitivele de calcul. Dacă doriți să adăugați, să găsiți, să modificați sau să ștergeți informații, structura va oferi un anumit pachet de opțiuni, care este interfața sa.
conținut
- Ce include conceptul de structură a datelor?
- Ce formează structura?
- Comparăm structura în programarea funcțională și imperativă
- Ce include structura?
- Grămadă
- Coada de așteptare
- Decembrie
- Liste
- Copaci
- Numără
- Mai multe informații despre structura abstractă
- Care sunt recomandările metodologice pentru lucrul cu structurile?
- Cine are nevoie să știe asta?
Ce include conceptul de structură a datelor?
Acest termen poate avea mai multe semnificații apropiate, dar totuși distinctive. Acestea sunt:
- tip abstract;
- implementarea unui tip abstract de informații;
- O instanță a unui tip de date, de exemplu, o listă specifică.
Dacă vorbim despre structura datelor în contextul programării funcționale, atunci aceasta este o unitate specială care este salvată atunci când au loc schimbări. Acesta poate fi descris informal ca o singură structură, în ciuda faptului că pot exista versiuni diferite.
Ce formează structura?
Structura datelor se formează utilizând tipuri de informații, linkuri și operații pe acestea într-un limbaj de programare specific. Merită să spunem că diferite tipuri de structuri sunt potrivite pentru aplicații diferite, unele, de exemplu, au o specializare foarte îngustă și sunt adecvate numai pentru realizarea sarcinilor stabilite.
Dacă luăm B-arbori, atunci ele sunt de obicei potrivite pentru formarea de baze de date și numai pentru ei. În același timp, tabletele hash sunt folosite peste tot în practică pentru a crea diferite dicționare, de exemplu, pentru a demonstra nume de domenii în adresele de internet ale PC-urilor și nu doar pentru formarea de baze de date.
În timpul dezvoltării unui anumit software, complexitatea implementării și calitatea funcționalității programelor depind în mod direct de aplicarea corectă a structurilor de date. Această înțelegere a lucrurilor a dat naștere dezvoltării tehnicilor de dezvoltare formală și limbajelor de programare, unde structurile, mai degrabă decât algoritmii, sunt plasate în pozițiile de lider în arhitectura programului.
Este demn de remarcat faptul că mai multe limbaje de programare au stabilit tipul de modularitate, care permite structurilor de date utilizate în condiții de siguranță într-o varietate de aplicații. Exemple puternice sunt limbile Java, C # și C ++. Acum, structura clasică a datelor utilizate este prezentată în bibliotecile standard de limbi de programare sau direct este deja construită în limba în sine. De exemplu, această structură de tabele hash este construită în Lua, Python, Perl, Ruby, Tcl și altele. O bibliotecă de șabloane standard în C ++ este utilizată pe scară largă.
Comparăm structura în programarea funcțională și imperativă
Se precizează imediat că structurile de proiectare pentru limbaje funcționale mai complexe decât obligatoriu, cel puțin din două motive:
- De fapt, toate structurile folosesc adesea atribuții în practică, care nu sunt folosite într-un stil pur funcțional.
- Structurile funcționale sunt sisteme flexibile. În programarea imperativă, versiunile mai vechi sunt pur și simplu înlocuite cu versiuni noi, dar în programarea funcțională totul funcționează așa cum a funcționat. Cu alte cuvinte, în structurile de programare imperative sunt efemere, iar în funcționalitate ele sunt permanente.
Ce include structura?
Adesea, datele cu care lucrează programele sunt stocate în matrice încorporate în limbajul de programare, o constantă sau într-o lungime variabilă. O matrice este o structură simplă cu informații, dar unele sarcini necesită o mai mare eficiență a unor operații, prin urmare sunt folosite alte structuri (mai complexe).
Cea mai simplă matrice este potrivită pentru accesarea frecventă a componentelor instalate prin indexuri și schimbarea lor, precum și pentru îndepărtarea elementelor de la funcțiile de mijloc în conformitate cu principiul O (N) O (N). Dacă trebuie să ștergeți elemente pentru a rezolva anumite sarcini, va trebui să utilizați o structură diferită. De exemplu, arbore binar (std :: set) vă permite să faceți acest lucru pe O (LOGN) O (logN), dar aceasta nu funcționează cu indexuri efectuate elemente de ocolire exclusiv alternative și căutarea sensului. Astfel, se poate spune că structura diferă în ceea ce privește operațiunile pe care le poate efectua, precum și viteza de realizare a acestora. De exemplu, luați în considerare cele mai simple structuri care nu oferă câștiguri de eficiență, dar aveți un set bine definit de operațiuni acceptate.
grămadă
Acesta este unul dintre tipurile de structuri de date reprezentate sub forma unei matrice elementare limitată. Stack-ul clasic acceptă doar trei opțiuni:
- Adăugați un element în stivă (Complexitate: O (1) O (1)).
- Extragerea unui element din stivă (Complexitate: O (1) O (1)).
- Verificați dacă teancul este gol sau nu (Complexitate: O (1) O (1)).
Pentru a clarifica principiul stiva, puteți aplica în practică o analogie cu o cutie de cookie-uri. Imaginați-vă că în partea de jos a vasului se află câteva biscuiți. La etaj poți pune mai multe bucăți sau poți, dimpotrivă, să iei un cookie de sus. Restul de cookie-uri vor fi închise de partea de sus și nu veți ști nimic despre ele. Acesta este cazul cu stiva. Pentru a descrie conceptul, se folosește abrevierea LIFO (Last In, First Out), care subliniază faptul că componenta care a intrat ultima în stivă va fi prima și extrasă din ea.
Coada de așteptare
Acesta este un alt tip de structură de date care acceptă același set de opțiuni ca și stiva, dar are o semantică opusă. Pentru a descrie coada, se folosește abrevierea FIFO (First In, First Out), deoarece elementul care a fost adăugat pentru prima oară este extras mai întâi. Numele structurii vorbește de la sine - principiul muncii coincide complet cu cozile care pot fi văzute în magazin, supermarket.
decembrie
Acesta este un alt tip de structură de date, numită și o coadă cu două capete. Opțiunea acceptă următorul set de operațiuni:
- Adăugați un element la început (Complexitate: O (1) O (1)).
- Extrageți componenta de la început (Complexitate: O (1) O (1)).
- Adăugarea unui element la sfârșit (Complexitate: O (1) O (1)).
- Extragerea unui element de la capăt (Complexitate: O (1) O (1)).
- Verificați dacă punțile sunt goale (Complexitate: O (1) O (1)).
liste
Această structură de date definește o secvență de componente legate în mod liniar pentru care sunt permise și șterse operațiile de adăugare a componentelor în orice loc din listă. O listă liniară este specificată de un indicator la începutul listei. Operațiuni tipice pe liste: accesarea cu crawlere, căutarea unei anumite componente, introducerea unui element, ștergerea unei componente, combinarea a două liste într-un singur întreg, împărțirea listei în perechi și așa mai departe. Merită menționat faptul că în lista liniară, pe lângă primul, există o componentă anterioară pentru fiecare element, fără a include ultima. Aceasta înseamnă că componentele listei sunt într-o stare ordonată. Da, prelucrarea unei astfel de liste nu este întotdeauna convenabilă, deoarece nu există posibilitatea de a vă deplasa în direcția opusă - de la sfârșitul listei până la începutul acesteia. Cu toate acestea, în lista liniară, puteți trece pas cu pas prin toate componentele.
Există și liste de apeluri. Aceasta este aceeași structură ca lista liniară, dar are o legătură suplimentară între prima și ultima componentă. Cu alte cuvinte, componenta următoare este prima componentă.
În această listă, elementele sunt egale. Alocarea primului și ultimului este o condiționalitate.
copaci
Aceasta este o colecție de componente, numite noduri, în care există o componentă principală (una) sub forma unei rădăcini, iar toate celelalte sunt împărțite într-un set de elemente disjuncte. Fiecare set este un copac, iar rădăcina fiecărui arbore este un descendent al rădăcinii copacilor. Cu alte cuvinte, toate componentele sunt legate printr-o relație strămoș-copil. Ca urmare, puteți observa structura ierarhică a nodurilor. Dacă nodurile nu au un descendent, atunci ele sunt numite frunze. Deasupra arborelui, sunt definite operațiuni cum ar fi adăugarea unei componente și ștergerea acesteia, accesarea cu crawlere și căutarea unei componente. Un rol deosebit în domeniul informaticii îl joacă copacii binari. Ce este? Acesta este un caz special al unui copac în care fiecare nod nu poate avea mai mult de o pereche de descendenți care sunt rădăcinile subtreiilor stânga și dreapta. În cazul în care, în plus față de nodurile de arbori se realizează o altă condiție ca toate valorile componentelor subarbore stâng este mai mică decât valorile rădăcină, iar valorile componentelor subarborelui drept mai mare rădăcină, arborele este numit un arbore binar de căutare, și este proiectat pentru a gasi rapid elemente. Cum funcționează algoritmul de căutare în acest caz? Valoarea de căutare este comparată cu valoarea rădăcină, iar în funcție de rezultat, căutarea se termină sau continuă, dar exclusiv în substratul din stânga sau din dreapta. Numărul total de operații de comparație nu va depăși înălțimea arborelui (acesta este cel mai mare număr de componente pe calea de la rădăcină la una din frunze).
Numără
Graficele reprezintă o colecție de componente care se numesc noduri, împreună cu un set de relații între aceste noduri, numite margini. Interpretarea grafică a acestei structuri este reprezentată sub forma unui set de puncte care corespund vârfurilor, iar unele perechi sunt legate prin linii sau săgeți, care corespund marginilor. Ultimul caz indică faptul că graficul trebuie să fie denumit orientat.
Graficele pot descrie obiecte de orice structură, ele sunt principalele mijloace de descriere a structurilor complexe și a funcționării tuturor sistemelor.
Mai multe informații despre structura abstractă
Pentru a construi un algoritm, trebuie să formalizați datele sau, cu alte cuvinte, trebuie să aduceți datele într-un model informațional specific, care a fost deja cercetat și scris. Odată ce modelul este găsit, se poate argumenta că este stabilită o structură abstractă.
Aceasta este structura principală a datelor, care prezintă atributele, calitatea obiectului, relația dintre componentele obiectului și operație, care se poate face peste acesta. Sarcina principală este găsirea și afișarea formularelor pentru prezentarea informațiilor care sunt confortabile pentru corecția calculatorului. Este demn de menționat faptul că informatica, ca știință exactă, acționează cu obiecte formale.
Analiza structurilor de date se realizează prin următoarele obiective:
- Integre și numere reale.
- Valorile booleene.
- Simboluri.
Pentru prelucrarea tuturor elementelor de pe calculator, există algoritmi și structuri de date corespunzătoare. Obiectele tipice pot fi combinate în structuri complexe. Puteți adăuga operațiuni pe ele, reguli pentru anumite componente ale acestei structuri.
Structura organizației de date include:
- Vectorii.
- Structuri dinamice.
- Tabel.
- Array multidimensionale.
- Grafice.
Dacă toate elementele sunt selectate cu succes, aceasta va fi cheia pentru formarea de algoritmi și structuri de date eficiente. Dacă aplicați analogia structurilor și a obiectelor reale în practică, puteți rezolva în mod eficient problemele existente.
Este demn de remarcat faptul că toate structurile organizării datelor există separat în programare. Deasupra lor sa lucrat mult în secolele al XVIII-lea și al XIX-lea, când nu era încă în vedere niciun computer.
Posibilitatea de a dezvolta un algoritm în ceea ce privește structurile abstracte, ci pentru a pune în aplicare algoritmul într-un anumit limbaj de programare este necesară pentru a găsi o tehnică pentru interpretarea din tipuri de date, operatori care sunt susținute de un anumit limbaj de programare. Pentru a crea structuri cum ar fi vectorul, plăcuța de nume, șirul, secvența, în multe limbi de programare există tipuri de date clasice: matrice unidimensională sau bidimensională, șir, fișier.
Care sunt recomandările metodologice pentru lucrul cu structurile?
Ne-am ocupat de caracteristicile structurilor de date, acum ar trebui să acordăm mai multă atenție înțelegerii conceptului de structură. Atunci când rezolvăm absolut orice problemă, este necesar să lucrăm cu unele date pentru a efectua operații cu privire la informații. Fiecare sarcină are un set propriu de operațiuni, dar un anumit set este folosit în practică mai des pentru a rezolva o varietate de sarcini. În acest caz, este util să prezentăm o anumită modalitate de organizare a informațiilor, care să permită efectuarea acestor operații cât mai eficient posibil. Odată ce a apărut o astfel de metodă, puteți presupune că aveți o "cutie neagră" în care vor fi stocate date de un anumit tip și care vor efectua anumite operații de date. Acest lucru va distrage atenția de la detalii și se va concentra pe trăsăturile caracteristice ale problemei. Această "cutie neagră" poate fi pusă în aplicare în orice mod, în timp ce este necesar să se facă eforturi pentru o implementare productivă cât mai mult posibil.
Cine are nevoie să știe asta?
Programatorii cunoscuți care doresc să-și găsească locul în acest domeniu sunt familiarizați cu informațiile, dar nu știu unde să meargă. Acestea sunt elementele de bază ale fiecărui limbaj de programare, astfel încât nu va fi inutil să învățați imediat despre structurile de date și după ce ați lucrat cu aceștia pe exemple specifice și cu un anumit limbaj. Nu trebuie uitat faptul că fiecare structură poate fi caracterizată prin reprezentări logice și fizice, precum și un set de operații pe aceste reprezentări.
Nu uitați: dacă vorbiți despre o anumită structură, atunci țineți cont de reprezentarea sa logică, deoarece reprezentarea fizică este complet ascunsă de "observatorul extern".
În plus, rețineți că reprezentarea logică este complet independentă de limbajul de programare și de calculator, iar reprezentarea fizică, dimpotrivă, depinde de traducători și calculatoare. De exemplu, o matrice bidimensională în Fortran și Pascal poate fi reprezentată într-un mod identic, iar reprezentarea fizică în același computer în aceste limbi va fi diferită.
Nu vă grăbiți să începeți să învățați anumite structuri, este mai bine să înțelegeți clasificarea lor, să vă familiarizați cu toți în teorie și, de preferință, în practică. Merită amintit faptul că variabilitatea este o caracteristică importantă a structurii și indică o situație statică, dinamică sau semi-statică. Aflați elementele de bază înainte să începeți lucruri mai globale, ceea ce vă va ajuta în dezvoltarea viitoare.
- Care sunt obiectivele designului bazei de date
- Sistem informațional și de referință: tipuri și exemple. Ce este acest sistem de informații și de…
- Memorie. Dispozitiv de memorie pentru calculator
- Care sunt datele? Tipuri de date
- DB este ... Tipuri și proprietăți ale bazei de date
- Care sunt cele mai frecvente în practică bazele de date?
- Tipurile de date și modul de procesare a acestora
- MPLS - ce este?
- Funcții de bază
- Conceptul de informație
- Model de date ierarhic
- Model de date rețea
- Arhitectura client-server
- Structura sistemului informatic, subsisteme
- Structura bazei de date
- Tipuri de sisteme de management al întreprinderii: structura organizatorică liniară, personalul…
- Structura apei și proprietățile acesteia
- Structura organizatorică divizată a întreprinderii
- Tipuri de date
- Funcția Hash: ce este, de ce este nevoie și ce se întâmplă
- Sistemul de informații este o posibilitate științifică de a gestiona operațional