HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...
HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...
HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...
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