Professional Documents
Culture Documents
Stromy
Stromy
je to funkcia, ktora reprezentuje ako sa bude zlozitost algoritmu spravat vzhaldom na mnozstvo dat.
Zložitosť (časová aj pamäťová) sa vyjadruje pomocou funkcií, ktorých argumentom je množstvo dát.
Môžu byť :
Usporiadané – najstarší syn, mladší brat
Neusporiadané – neusporiadaní potomkovia
Prehliadky:
PreOrder
- V priamom poradí
- Prehliadka do hĺbky
- Najskôr vrchol, potom všetkých synov (cele vetvy)
PostOrder
InOrder
- Prehliadka do hĺbky
- Najskôr ľavého syna potom seba a nakoniec pravého
LevelOrder
- Prehliadka po úrovniach
- Prehliadka do šírky, využíva front
Tabuľky
IMPLICITNE IMPLEMENTACIE TABULIEK
Prvok je charakterizovaný dátami a jednoznačným kľúcom.
Nájdi:
Interpolačné vyhľadávanie
KUT
Oplatí sa len keď máme malý počet dát, inak začína byť neefektívna.
Treap
Haldové usporiadanie – prvky sa ukladajú zľava, otec má vyššiu prioritu alebo rovnú ako synovia.
Každý vrchol okrem ukazovateľov na otca a synov, bude obsahovať prioritu. – cena za väčšiu
pamäťovú zložitosť – zefektívnenie zložitosti.
Prioritu prisdzuje dátam náhodne treap – na obrovskom intervale náhodne. (neriešime prioritu –
nemusí byť unikátna)
Treap nezaručuje že bude perfektne usporiadaný – všetko záleží od toho aké hodnoty dostane
z generátora.
Vlož: Ak má prvok väčšiu prioritu ako jeho otec, rotujem v smere otca.
V ľavom podstrome V, je určite menší kľuč, takže musím pri rotácií dať V do pravého pod
V pravom podstrome je určite väčší kľúč takže V musím dať ako ľavého syna.
Vlož: O(1)
Zruš: O(1)
Nájdi: O(1)
-Podľa toho aká je použitá hashovacia funkcia a záleží aj od toho ako sú riešené kolízie, najlepšie
z riešení je reťazenie.
- Založená na poli
Vlož: O(1) – vkladám na koniec (nezisťujem či mám duplicitný kľúč – ak áno O(N))
Nájdi: O(N)
Vlož: O(Sqrt(N))
Zruš: O(Sqrt(N))
Nájdi: O(Sqrt(N))
O(N) pri degenerácií – stále pridávam väčšie ako koreň alebo menšie ako koreň.
Vlož: O(1)
Zruš: O(1)
Nájdi: O(N)
Treap
Vlož: O(log N)
Zruš: O(log N)
Nájdi: O(log N)
Na množine kľúčov musí byť definované úplne usporiadanie. (všetky relačné operátory)
Select Sort
Insert Sort
O(N2)
Na mieste, prirodzeny.
Bubble Sort
O(N*log2N) – O(N2)
Zložitosť závisi od výberu pivota. Ak sa vyberie medián, zložitosť je logaritmická ak maximum alebo
minimum, zložitosť je N2.
- Na mieste
Heap Sort
O(N*log2N)
Radix sort
O(k*N)
-nieje na mieste
-neutrálny
Merge Sort
O(N*log2N)
Dvojice, štvorice, osmice..... atď porovnávam 2 prioritné fronty medzi sebou, menší prvý prvok
vyberám.
-nieje na mieste
-neutrálny
Shell Sort
O(N1,2)
-nie je na mieste
-neutrálny
Stack vs Heap
Stack skladá dáta na seba, posúva stack pointer a ukladá dáta zaradom.
Heap ukladá dáta náhodne. Musí prehľadávať free list, nájsť dostatočne veľký blok.