09.01.2014 Views

HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...

HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...

HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

33 HOOFDSTUK 4: Sorter<strong>en</strong> <strong>en</strong> zoek<strong>en</strong> 33<br />

er voor staan ook er voor hor<strong>en</strong> <strong>en</strong> dat alle elem<strong>en</strong>t<strong>en</strong> die er na staan, ook er na hor<strong>en</strong>. Als de elem<strong>en</strong>t<strong>en</strong><br />

zo staan, wordt links <strong>en</strong> rechts van de mediaan dezelfde bewerking herhaald (hier kan van recursie gebruik<br />

gemaakt word<strong>en</strong>!). Dit gaat door tot er ge<strong>en</strong> herhaling<strong>en</strong> meer mogelijk zijn: alle elem<strong>en</strong>t<strong>en</strong> staan in de<br />

goede volgorde.<br />

Gemiddeld ev<strong>en</strong>redig met n ∗ log(n).<br />

4.3 Hashing<br />

Bij het zoek<strong>en</strong> in grote, in bestand<strong>en</strong> opgeslag<strong>en</strong> lijst<strong>en</strong> wordt vaak e<strong>en</strong> techniek toegepast, die hashing g<strong>en</strong>oemd<br />

wordt.<br />

Bij e<strong>en</strong> grote inv<strong>en</strong>tarislijst van magazijnartikel<strong>en</strong>, bijvoorbeeld, kan het inv<strong>en</strong>tarisnummer gebruikt word<strong>en</strong> om<br />

gegev<strong>en</strong>s over e<strong>en</strong> artikel op te vrag<strong>en</strong>. Het is mogelijk om hiervoor e<strong>en</strong> array te gebruik<strong>en</strong> met het inv<strong>en</strong>tarisnummer<br />

als index. Maar meestal zull<strong>en</strong> de inv<strong>en</strong>tarisnummers niet ope<strong>en</strong>volg<strong>en</strong>d zijn <strong>en</strong> zull<strong>en</strong> er dus grote del<strong>en</strong><br />

van het array niet gebruikt word<strong>en</strong>.<br />

Bij hashing wordt in dit geval het artikelnummer (de key) met behulp van e<strong>en</strong> hash functie omgezet in e<strong>en</strong><br />

index, waarbij de maximale waarde van de index iets groter is dan het aantal artikel<strong>en</strong>. Zowel bij toevoeg<strong>en</strong> als<br />

bij opzoek<strong>en</strong> wordt nu de hash functie gebruikt.<br />

E<strong>en</strong> probleem dat hierbij kan optred<strong>en</strong>, is dat meerdere keys naar dezelfde index verwijz<strong>en</strong> (collision). Dit kan<br />

op e<strong>en</strong>voudige wijze opgelost word<strong>en</strong>, door de volg<strong>en</strong>de vrije positie in het array te gebruik<strong>en</strong>. Ook kan e<strong>en</strong><br />

tweede, andere hash functie gebruikt word<strong>en</strong> om e<strong>en</strong> nieuwe index te g<strong>en</strong>erer<strong>en</strong> (double hashing).<br />

<strong>HANDLEIDING</strong> <strong>PROGRAMMEREN</strong> August 27, 2009

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!