Ga naar hoofdinhoud

Binair zoeken — het idee

Leerdoel: je begrijpt het idee van halveren bij zoeken, en waarom dat veel sneller kan dan lineair zoeken. Nog geen Python — eerst snappen.

Het verhaal

We doen een raadspel: ik denk aan een getal tussen 1 en 100. Bij elke gok zeg ik "hoger", "lager" of "goed!".

Wat is jouw eerste gok?

De slimste eerste gok

50. Daarmee elimineer je in één klap de helft van alle mogelijkheden.

  • Zeg ik hoger → het zit tussen 51 en 100.
  • Zeg ik lager → het zit tussen 1 en 49.

Jouw tweede gok? Weer precies in het midden van het overgebleven bereik. En zo verder.

Op deze manier ben je er bij 100 getallen in maximaal 7 gokken (want 2⁷ = 128 ≥ 100).

Dat is binair zoeken in één zin: kies steeds het midden, halveer het zoekgebied, herhaal.

Belangrijke voorwaarde

Binair zoeken werkt alleen op een gesorteerde lijst. Anders heeft "het midden" geen betekenis — je weet niet of het doel links of rechts ligt.

Visualisatie — wel gevonden

We zoeken 7 in deze gesorteerde lijst:

zoeken: 7
lijst: [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ]
index: 0 1 2 3 4 5 6 7

stap 1: laag=0, hoog=7 → midden=3 → lijst[3]=7
[ 1 , 3 , 5 ,(7), 9 , 11 , 13 , 15 ] 7 == 7? JA → index 3

In één stap raak! Dat was geluk: 7 zat precies op het midden.

Visualisatie — niet gevonden

We zoeken 4 in dezelfde lijst:

zoeken: 4
lijst: [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ]

stap 1: laag=0, hoog=7 → midden=3 → lijst[3]=7
midden te hoog → kijk alleen nog links → hoog wordt 2

stap 2: laag=0, hoog=2 → midden=1 → lijst[1]=3
midden te laag → kijk alleen nog rechts → laag wordt 2

stap 3: laag=2, hoog=2 → midden=2 → lijst[2]=5
midden te hoog → hoog wordt 1
laag > hoog → stop → niet gevonden → -1

Drie stappen, geen match. We zijn klaar.

Hoe snel?

Voor een lijst van 1.000.000 elementen:

Lineair zoekenBinair zoeken
Werkt op ongesorteerd
Max. vergelijkingen1.000.000~20
SnelheidsklasseO(n)O(log n)

Dat is een factor 50.000 verschil. Bij een miljard zou het verschil al nog veel groter zijn — exponentieel groter zelfs.

Door naar stap 2: stellingen →