Od vynálezu počítačov ľudia používajú výraz „ Údaje “ označuje informácie o počítači, prenášané alebo uložené. Existujú však údaje, ktoré existujú aj v typoch objednávok. Dáta môžu byť čísla alebo texty napísané na kúsku papiera vo forme bitov a bajtov uložených v pamäti elektronických zariadení alebo fakty uložené v mysli človeka. Keď sa svet začal modernizovať, tieto údaje sa stali dôležitým aspektom každodenného života každého človeka a rôzne implementácie im umožnili ukladať ich inak.
Údaje je súbor faktov a čísel alebo súbor hodnôt alebo hodnôt špecifického formátu, ktorý sa vzťahuje na jeden súbor hodnôt položiek. Dátové položky sa potom klasifikujú do podpoložiek, čo je skupina položiek, ktoré nie sú známe ako jednoduchá primárna forma položky.
Uvažujme o príklade, kde možno meno zamestnanca rozdeliť na tri podpoložky: First, Middle a Last. ID pridelené zamestnancovi sa však vo všeobecnosti bude považovať za jednu položku.
Postava 1: Reprezentácia dátových položiek
Vo vyššie uvedenom príklade sú položky ako IČO, Vek, Pohlavie, Prvý, Stred, Posledný, Ulica, Lokalita atď. Naproti tomu Meno a Adresa sú skupinové dátové položky.
Čo je dátová štruktúra?
Dátová štruktúra je odbor informatiky. Štúdium štruktúry údajov nám umožňuje pochopiť organizáciu údajov a riadenie toku údajov s cieľom zvýšiť efektivitu akéhokoľvek procesu alebo programu. Štruktúra údajov je osobitný spôsob ukladania a organizácie údajov v pamäti počítača, takže tieto údaje možno v prípade potreby v budúcnosti ľahko vyhľadať a efektívne využiť. Údaje možno spravovať rôznymi spôsobmi, napríklad logický alebo matematický model pre špecifickú organizáciu údajov je známy ako dátová štruktúra.
Rozsah konkrétneho dátového modelu závisí od dvoch faktorov:
- Po prvé, musí byť dostatočne načítaný do štruktúry, aby odrážal definitívnu koreláciu údajov s objektom reálneho sveta.
- Po druhé, formácia by mala byť taká jednoduchá, že sa dá prispôsobiť efektívnemu spracovaniu údajov, kedykoľvek je to potrebné.
Niektoré príklady dátových štruktúr sú polia, prepojené zoznamy, zásobník, front, stromy atď. Dátové štruktúry sa široko používajú takmer vo všetkých aspektoch informatiky, t. j. dizajn kompilátorov, operačné systémy, grafika, umelá inteligencia a mnoho ďalších.
Dátové štruktúry sú hlavnou súčasťou mnohých algoritmov informatiky, pretože umožňujú programátorom efektívne spravovať údaje. Zohráva kľúčovú úlohu pri zlepšovaní výkonu programu alebo softvéru, keďže hlavným cieľom softvéru je čo najrýchlejšie ukladať a získavať údaje používateľa.
sql vyberte z viacerých tabuliek
Základné terminológie súvisiace s dátovými štruktúrami
Dátové štruktúry sú stavebnými kameňmi akéhokoľvek softvéru alebo programu. Výber vhodnej dátovej štruktúry pre program je pre programátora mimoriadne náročná úloha.
Nasleduje niekoľko základných terminológií používaných vždy, keď sú zahrnuté dátové štruktúry:
Atribúty | ID | názov | rod | Názov práce |
---|---|---|---|---|
hodnoty | 1234 | Stacey M. Hill | Žena | Vývojár softvéru |
Entity s podobnými atribútmi tvoria an Súprava entít . Každý atribút množiny entít má rozsah hodnôt, množinu všetkých možných hodnôt, ktoré je možné priradiť konkrétnemu atribútu.
Termín „informácia“ sa niekedy používa pre údaje s danými atribútmi zmysluplných alebo spracovaných údajov.
Pochopenie potreby dátových štruktúr
Keďže aplikácie sú čoraz zložitejšie a množstvo údajov sa každým dňom zvyšuje, čo môže viesť k problémom s vyhľadávaním údajov, rýchlosťou spracovania, vybavovaním viacerých požiadaviek a mnohým ďalším. Dátové štruktúry podporujú rôzne metódy na efektívnu organizáciu, správu a ukladanie údajov. Pomocou dátových štruktúr môžeme jednoducho prechádzať dátovými položkami. Dátové štruktúry poskytujú efektívnosť, opätovnú použiteľnosť a abstrakciu.
Prečo by sme sa mali učiť dátové štruktúry?
- Dátové štruktúry a algoritmy sú dva kľúčové aspekty informatiky.
- Dátové štruktúry nám umožňujú organizovať a ukladať údaje, zatiaľ čo algoritmy nám umožňujú zmysluplne spracovávať tieto údaje.
- Učenie sa dátových štruktúr a algoritmov nám pomôže stať sa lepšími programátormi.
- Budeme schopní napísať kód, ktorý bude efektívnejší a spoľahlivejší.
- Budeme tiež schopní rýchlejšie a efektívnejšie riešiť problémy.
Pochopenie cieľov dátových štruktúr
Dátové štruktúry spĺňajú dva doplnkové ciele:
Pochopenie niektorých kľúčových funkcií dátových štruktúr
Niektoré z významných funkcií dátových štruktúr sú:
Klasifikácia dátových štruktúr
Dátová štruktúra poskytuje štruktúrovaný súbor premenných, ktoré navzájom súvisia rôznymi spôsobmi. Tvorí základ programovacieho nástroja, ktorý označuje vzťah medzi dátovými prvkami a umožňuje programátorom efektívne spracovávať dáta.
Dátové štruktúry môžeme rozdeliť do dvoch kategórií:
- Primitívna dátová štruktúra
- Neprimitívna dátová štruktúra
Nasledujúci obrázok zobrazuje rôzne klasifikácie dátových štruktúr.
ako skontrolovať blokované čísla v systéme Android
Obrázok 2: Klasifikácia dátových štruktúr
Primitívne dátové štruktúry
- S týmito dátovými štruktúrami možno manipulovať alebo ich ovládať priamo pomocou inštrukcií na úrovni stroja.
- Základné dátové typy ako napr Integer, Float, Character , a Boolean patria pod primitívne dátové štruktúry.
- Tieto dátové typy sa tiež nazývajú Jednoduché dátové typy , keďže obsahujú znaky, ktoré sa nedajú ďalej deliť
Neprimitívne dátové štruktúry
- S týmito dátovými štruktúrami nie je možné manipulovať ani ich priamo ovládať pomocou inštrukcií na úrovni stroja.
- Zameranie týchto dátových štruktúr je na vytvorenie súboru dátových prvkov, ktoré sú buď homogénne (rovnaký dátový typ) resp heterogénne (rôzne typy údajov).
- Na základe štruktúry a usporiadania dát môžeme tieto dátové štruktúry rozdeliť do dvoch podkategórií –
- Lineárne dátové štruktúry
- Nelineárne dátové štruktúry
Lineárne dátové štruktúry
Dátová štruktúra, ktorá zachováva lineárne spojenie medzi svojimi dátovými prvkami, je známa ako lineárna dátová štruktúra. Usporiadanie údajov sa vykonáva lineárne, kde každý prvok pozostáva z nasledovníkov a predchodcov okrem prvého a posledného prvku údajov. V prípade pamäte to však nemusí byť pravda, pretože usporiadanie nemusí byť sekvenčné.
Na základe alokácie pamäte sa lineárne dátové štruktúry ďalej delia na dva typy:
The Pole je najlepším príkladom štruktúry statických údajov, pretože má pevnú veľkosť a jej údaje možno neskôr upraviť.
Prepojené zoznamy, zásobníky , a Chvosty sú bežné príklady dynamických dátových štruktúr
Typy lineárnych dátových štruktúr
Nasleduje zoznam lineárnych dátových štruktúr, ktoré bežne používame:
1. Polia
An Pole je dátová štruktúra používaná na zhromažďovanie viacerých dátových prvkov rovnakého dátového typu do jednej premennej. Namiesto ukladania viacerých hodnôt rovnakých dátových typov v samostatných názvoch premenných by sme ich mohli všetky uložiť spolu do jednej premennej. Toto vyhlásenie neznamená, že budeme musieť zjednotiť všetky hodnoty rovnakého typu údajov v akomkoľvek programe do jedného poľa tohto typu údajov. Ale často sa vyskytnú prípady, keď niektoré špecifické premenné rovnakého dátového typu spolu súvisia spôsobom vhodným pre pole.
Pole je zoznam prvkov, kde každý prvok má v zozname jedinečné miesto. Dátové prvky poľa zdieľajú rovnaký názov premennej; každý však nesie iné indexové číslo nazývané dolný index. K akémukoľvek dátovému prvku zo zoznamu môžeme pristupovať pomocou jeho umiestnenia v zozname. Kľúčovou vlastnosťou polí je teda to, že údaje sú uložené v súvislých pamäťových miestach, čo používateľom umožňuje prechádzať cez dátové prvky poľa pomocou ich príslušných indexov.
Obrázok 3. Pole
Polia možno rozdeliť do rôznych typov:
Niektoré aplikácie Array:
- Môžeme uložiť zoznam dátových prvkov patriacich do rovnakého dátového typu.
- Pole funguje ako pomocné úložisko pre iné dátové štruktúry.
- Pole tiež pomáha ukladať dátové prvky binárneho stromu s pevným počtom.
- Pole funguje aj ako úložisko matíc.
2. Prepojené zoznamy
A Prepojený zoznam je ďalším príkladom lineárnej dátovej štruktúry používanej na dynamické ukladanie kolekcie dátových prvkov. Dátové prvky v tejto dátovej štruktúre sú reprezentované uzlami, ktoré sú spojené pomocou odkazov alebo ukazovateľov. Každý uzol obsahuje dve polia, informačné pole pozostáva zo skutočných údajov a pole ukazovateľa pozostáva z adresy nasledujúcich uzlov v zozname. Ukazovateľ posledného uzla prepojeného zoznamu pozostáva z nulového ukazovateľa, pretože neukazuje na nič. Na rozdiel od polí môže používateľ dynamicky upravovať veľkosť prepojeného zoznamu podľa požiadaviek.
Obrázok 4. Prepojený zoznam
linuxové klávesové skratky
Prepojené zoznamy možno rozdeliť do rôznych typov:
Niektoré aplikácie prepojených zoznamov:
- Prepojené zoznamy nám pomáhajú implementovať zásobníky, fronty, binárne stromy a grafy vopred definovanej veľkosti.
- Môžeme tiež implementovať funkciu operačného systému pre dynamickú správu pamäte.
- Prepojené zoznamy tiež umožňujú implementáciu polynómov pre matematické operácie.
- Circular Linked List môžeme použiť na implementáciu operačných systémov alebo funkcií aplikácií, ktoré Round Robin vykonávanie úloh.
- Kruhový prepojený zoznam je tiež užitočný pri prezentácii, kde sa používateľ po zobrazení poslednej snímky vyžaduje vrátiť sa na prvú snímku.
- Dvojito prepojený zoznam sa používa na implementáciu tlačidiel dopredu a dozadu v prehliadači na pohyb dopredu a dozadu na otvorených stránkach webovej lokality.
3. Hromady
A Stoh je lineárna dátová štruktúra, ktorá nasleduje LIFO (Last In, First Out) princíp, ktorý umožňuje operácie ako vkladanie a vymazávanie z jedného konca zásobníka, t.j. Zásobníky možno implementovať pomocou súvislej pamäte, poľa a nesúvislej pamäte, prepojeného zoznamu. Príklady stackov v reálnom živote sú hromady kníh, balíček kariet, hromady peňazí a mnohé ďalšie.
Obrázok 5. Príklad zásobníka zo skutočného života
Vyššie uvedený obrázok predstavuje skutočný príklad zásobníka, kde sa operácie vykonávajú iba z jedného konca, ako je vkladanie a vyberanie nových kníh z hornej časti zásobníka. Znamená to, že vkladanie a odstraňovanie v zásobníku je možné vykonať iba z hornej časti zásobníka. V danom čase máme prístup len k vrchom zásobníka.
Primárne operácie v zásobníku sú nasledovné:
Obrázok 6. Zásobník
Niektoré aplikácie zásobníkov:
- Zásobník sa používa ako dočasná skladovacia štruktúra pre rekurzívne operácie.
- Zásobník sa tiež používa ako pomocná skladovacia štruktúra pre volania funkcií, vnorené operácie a odložené/odložené funkcie.
- Volania funkcií môžeme spravovať pomocou Stacks.
- Zásobníky sa tiež používajú na vyhodnotenie aritmetických výrazov v rôznych programovacích jazykoch.
- Zásobníky sú tiež užitočné pri konverzii infixových výrazov na postfixové výrazy.
- Zásobníky nám umožňujú kontrolovať syntax výrazu v programovacom prostredí.
- Pomocou Zátvoriek môžeme spárovať zátvorky.
- Zásobníky možno použiť na obrátenie reťazca.
- Zásobníky sú užitočné pri riešení problémov na základe spätného sledovania.
- Hromady môžeme použiť v hĺbkovom vyhľadávaní v grafe a prechádzaní stromov.
- Zásobníky sa používajú aj vo funkciách operačného systému.
- Zásobníky sa používajú aj vo funkciách UNDO a REDO pri úprave.
4. Chvosty
A Fronta je lineárna dátová štruktúra podobná zásobníku s určitými obmedzeniami na vkladanie a odstraňovanie prvkov. Vloženie prvku do frontu sa vykonáva na jednom konci a odstránenie sa vykonáva na druhom alebo opačnom konci. Môžeme teda dospieť k záveru, že dátová štruktúra Queue sa riadi princípom FIFO (First In, First Out) na manipuláciu s dátovými prvkami. Implementáciu frontov možno vykonať pomocou polí, prepojených zoznamov alebo zásobníkov. Niektoré príklady frontov v reálnom živote sú rad pri pokladni, eskalátor, umývačka áut a mnoho ďalších.
Obrázok 7. Reálny príklad fronty
Vyššie uvedený obrázok je skutočnou ilustráciou pokladne lístkov do kina, ktorá nám môže pomôcť pochopiť poradie, kde je vždy prvý obslúžený zákazník, ktorý príde ako prvý. Zákazník, ktorý príde ako posledný, bude nepochybne obsluhovaný ako posledný. Oba konce fronty sú otvorené a môžu vykonávať rôzne operácie. Ďalším príkladom je linka s občerstvením, kde je zákazník vložený zozadu, zatiaľ čo zákazník je odstránený na prednej strane po poskytnutí služby, o ktorú požiadal.
Toto sú hlavné operácie frontu:
abeceda čísel
Obrázok 8. Fronta
Niektoré aplikácie frontov:
- Fronty sa vo všeobecnosti používajú v operácii šírky vyhľadávania v grafoch.
- Fronty sa používajú aj v operáciách plánovača úloh operačných systémov, ako je napríklad vyrovnávacia pamäť klávesnice na ukladanie kláves stlačených používateľmi a tlačová vyrovnávacia pamäť na ukladanie dokumentov vytlačených tlačiarňou.
- Fronty sú zodpovedné za plánovanie CPU, plánovanie úloh a plánovanie disku.
- Prioritné fronty sa využívajú pri operáciách sťahovania súborov v prehliadači.
- Fronty sa tiež používajú na prenos údajov medzi periférnymi zariadeniami a CPU.
- Fronty sú tiež zodpovedné za spracovanie prerušení generovaných používateľskými aplikáciami pre CPU.
Nelineárne dátové štruktúry
Nelineárne dátové štruktúry sú dátové štruktúry, kde dátové prvky nie sú usporiadané v sekvenčnom poradí. Vkladanie a odstraňovanie údajov tu nie je možné lineárnym spôsobom. Medzi jednotlivými dátovými položkami existuje hierarchický vzťah.
Typy nelineárnych dátových štruktúr
Nasleduje zoznam nelineárnych dátových štruktúr, ktoré bežne používame:
1. Stromy
Strom je nelineárna dátová štruktúra a hierarchia obsahujúca kolekciu uzlov tak, že každý uzol stromu ukladá hodnotu a zoznam odkazov na iné uzly ('deti').
Stromová dátová štruktúra je špecializovaná metóda na usporiadanie a zhromažďovanie údajov v počítači, aby sa mohli efektívnejšie využívať. Obsahuje centrálny uzol, štrukturálne uzly a poduzly spojené cez hrany. Môžeme tiež povedať, že štruktúra údajov stromu pozostáva zo spojených koreňov, konárov a listov.
Obrázok 9. Strom
Stromy možno rozdeliť do niekoľkých typov:
Niektoré aplikácie stromov:
- Stromy implementujú hierarchické štruktúry v počítačových systémoch, ako sú adresáre a súborové systémy.
- Stromy sa tiež používajú na implementáciu navigačnej štruktúry webovej stránky.
- Pomocou Stromov môžeme vygenerovať kód ako Huffmanov kód.
- Stromy sú tiež nápomocné pri rozhodovaní v herných aplikáciách.
- Stromy sú zodpovedné za implementáciu prioritných frontov pre funkcie plánovania OS založené na prioritách.
- Stromy sú tiež zodpovedné za analýzu výrazov a príkazov v kompilátoroch rôznych programovacích jazykov.
- Stromy môžeme použiť na ukladanie dátových kľúčov na indexovanie pre systém správy databáz (DBMS).
- Spanning Trees nám umožňuje smerovať rozhodnutia v počítačových a komunikačných sieťach.
- Stromy sa používajú aj v algoritme hľadania cesty implementovanom v aplikáciách umelej inteligencie (AI), robotiky a videohier.
2. Grafy
Graf je ďalším príkladom nelineárnej dátovej štruktúry, ktorá obsahuje konečný počet uzlov alebo vrcholov a hrán, ktoré ich spájajú. Grafy sa používajú na riešenie problémov reálneho sveta, v ktorom označujú problémovú oblasť ako sieť, ako sú sociálne siete, okruhové siete a telefónne siete. Napríklad uzly alebo vrcholy grafu môžu predstavovať jedného používateľa v telefónnej sieti, zatiaľ čo okraje predstavujú spojenie medzi nimi cez telefón.
Dátová štruktúra grafu G sa považuje za matematickú štruktúru pozostávajúcu zo sady vrcholov V a sady hrán E, ako je uvedené nižšie:
G = (V,E)
Obrázok 10. A Graf
Vyššie uvedený obrázok predstavuje graf, ktorý má sedem vrcholov A, B, C, D, E, F, G a desať hrán [A, B], [A, C], [B, C], [B, D], [B, E], [C, D], [D, E], [D, F], [E, F] a [E, G].
V závislosti od polohy vrcholov a hrán možno grafy rozdeliť do rôznych typov:
Niektoré aplikácie grafov:
- Grafy nám pomáhajú reprezentovať trasy a siete v dopravných, cestovateľských a komunikačných aplikáciách.
- Grafy slúžia na zobrazenie trás v GPS.
- Grafy nám tiež pomáhajú reprezentovať prepojenia v sociálnych sieťach a iných sieťových aplikáciách.
- Grafy sa využívajú v mapovacích aplikáciách.
- Grafy sú zodpovedné za zobrazenie preferencií používateľov v aplikáciách elektronického obchodu.
- Grafy sa používajú aj v inžinierskych sieťach na identifikáciu problémov, ktorým sú vystavené miestne alebo obecné podniky.
- Grafy tiež pomáhajú riadiť využitie a dostupnosť zdrojov v organizácii.
- Grafy sa tiež používajú na vytváranie máp odkazov na dokumenty webových stránok, aby sa zobrazila konektivita medzi stránkami prostredníctvom hypertextových odkazov.
- Grafy sa používajú aj v robotických pohyboch a neurónových sieťach.
Základné operácie dátových štruktúr
V nasledujúcej časti budeme diskutovať o rôznych typoch operácií, ktoré môžeme vykonávať na manipuláciu s údajmi v každej dátovej štruktúre:
- Čas kompilácie
- Beh programu
Napríklad, malloc() funkcia sa používa v jazyku C na vytvorenie dátovej štruktúry.
Pochopenie abstraktného typu údajov
Podľa Národný inštitút pre štandardy a technológie (NIST) dátová štruktúra je usporiadanie informácií, zvyčajne v pamäti, pre lepšiu účinnosť algoritmu. Dátové štruktúry zahŕňajú prepojené zoznamy, zásobníky, fronty, stromy a slovníky. Môže ísť aj o teoretickú entitu, napríklad meno a adresu osoby.
Z vyššie uvedenej definície môžeme konštatovať, že operácie v dátovej štruktúre zahŕňajú:
- Vysoká úroveň abstrakcií, ako je pridanie alebo vymazanie položky zo zoznamu.
- Vyhľadávanie a triedenie položky v zozname.
- Prístup k položke s najvyššou prioritou v zozname.
Kedykoľvek dátová štruktúra vykonáva takéto operácie, je známa ako an Abstraktný typ údajov (ADT) .
Môžeme ho definovať ako množinu dátových prvkov spolu s operáciami s dátami. Pojem „abstrakt“ sa vzťahuje na skutočnosť, že údaje a základné operácie na nich definované sa skúmajú nezávisle od ich implementácie. Zahŕňa to, čo môžeme urobiť s údajmi, nie ako to môžeme urobiť.
Implementácia ADI obsahuje štruktúru úložného priestoru na uloženie dátových prvkov a algoritmov pre základnú prevádzku. Všetky dátové štruktúry, ako je pole, prepojený zoznam, front, zásobník atď., sú príkladmi ADT.
zoznam uzlov v jazyku Java
Pochopenie výhod používania ADT
V skutočnom svete sa programy vyvíjajú ako dôsledok nových obmedzení alebo požiadaviek, takže úprava programu vo všeobecnosti vyžaduje zmenu v jednej alebo viacerých dátových štruktúrach. Predpokladajme napríklad, že chceme vložiť nové pole do záznamu zamestnanca, aby sme mali prehľad o ďalších podrobnostiach o každom zamestnancovi. V takom prípade môžeme zvýšiť efektivitu programu nahradením poľa prepojenou štruktúrou. V takejto situácii je prepisovanie každej procedúry, ktorá využíva upravenú štruktúru, nevhodné. Preto je lepšou alternatívou oddelenie dátovej štruktúry od jej implementačných informácií. Toto je princíp používania abstraktných dátových typov (ADT).
Niektoré aplikácie dátových štruktúr
Nasledujú niektoré aplikácie dátových štruktúr:
- Dátové štruktúry pomáhajú pri organizácii údajov v pamäti počítača.
- Dátové štruktúry tiež pomáhajú pri reprezentácii informácií v databázach.
- Dátové štruktúry umožňujú implementáciu algoritmov na vyhľadávanie údajov (napríklad vyhľadávací nástroj).
- Dátové štruktúry môžeme použiť na implementáciu algoritmov na manipuláciu s údajmi (napríklad textové procesory).
- Môžeme tiež implementovať algoritmy na analýzu údajov pomocou dátových štruktúr (napríklad dataminers).
- Dátové štruktúry podporujú algoritmy na generovanie údajov (napríklad generátor náhodných čísel).
- Dátové štruktúry tiež podporujú algoritmy na kompresiu a dekompresiu údajov (napríklad pomôcka zip).
- Dátové štruktúry môžeme použiť aj na implementáciu algoritmov na šifrovanie a dešifrovanie údajov (napríklad bezpečnostný systém).
- Pomocou Data Structures môžeme vytvoriť softvér, ktorý dokáže spravovať súbory a adresáre (napríklad správca súborov).
- Môžeme tiež vyvinúť softvér, ktorý dokáže vykresliť grafiku pomocou dátových štruktúr. (Napríklad webový prehliadač alebo softvér na vykresľovanie 3D).
Okrem tých, ako už bolo spomenuté, existuje mnoho ďalších aplikácií dátových štruktúr, ktoré nám môžu pomôcť vytvoriť akýkoľvek požadovaný softvér.