datastruct
Toto je starší verze dokumentu!
Datove struktury
Obecne pouzitelne datove stuktury pro rychle vyhledavani, ukladani, dynamickou alokaci pameti
- pole s pevnou delkou pro male mnozstvi hodnot
- nejrychlejsi vyhledavani, prostorove narocne, nevyuzite misto
- dynamicke pole
- lepsi alokovat po vecich celcich
- zretezeny seznam
- jednosmerne/obousmerne
- slovnik/indexovani
- pomocna struktura pro zmenseni prohledavane domeny
- vyhledavaci strom
- hash tabulka, hash funkce
- pri kolizi znovu hash
- index napriklad podle prvnich n-bitu
Hash tabulka
- chceme efektivne vyuzivat alkovane misto
- chceme vyhledavat zaznamy s konstantni slozitosti
Implementace:
- hashfunc – hasovaci funkce. chceme aby byla rychla, mela dobre rozprostreni hodnot a minimum kolizi. Univerzalni hash funkce jsou napriklad CRC32 (akcelerovana na Intelu)
- hash_lookup – dostane klic a musi vratit index do tabulky, kde se klic nachazi. Pro prevod hash na cislo radku se pouziva napriklad modulo poctu radku tabulky (pro staticke tabulky) nebo n-bitu prefixu hashe (dynamicke tabulky)
- hash_insert – vyhleda pomoci lookup klic. pokud nenajde, zalozi novy. pokud najde, mel by overit, ze je skutecne stejne hodnoty.
- radek tabulky vetsinou obsahuje kapsu, kam se davaji stejne hash hodnoty (kolize). Pouziva se zde linearne zretezeny seznam
- pokud vypocitame hash a zjistime, ze hodnota je jina nez u jiz ulozenho, muzeme hash znovu zahashovat a dostat tak novou hodnotu pro ulozeni
datastruct.1370437722.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
