Stellingen — toets je begrip
Leerdoel: je toetst of je het idee van binair zoeken (halveren) snapt, voordat je gaat programmeren.
Stelling 1
"Binair zoeken werkt ook op een ongesorteerde lijst."
Antwoord
Onjuist. Het algoritme gaat ervan uit: "als het midden te hoog is, moet het doel links liggen". Die aanname klopt alleen als de lijst gesorteerd is. Op een rommelige lijst krijg je willekeurige antwoorden.
Stelling 2
"Bij een lijst van 1000 elementen heb je in het ergste geval maximaal 10 stappen nodig."
Antwoord
Juist. Elke stap halveert het zoekgebied. Hoe vaak kun je 1000 halveren voor er 1 over is? Tien keer, want 2¹⁰ = 1024. Tien stappen dus, ook als het doel niet bestaat.
Stelling 3
"Als een waarde meerdere keren voorkomt, geeft binair zoeken altijd de eerste voorkomende index."
Antwoord
Onjuist. Welke index je krijgt, hangt af van waar het midden toevallig
landt. Het kan elk van de gelijke waardes zijn. Wil je per se de
eerste? Dan moet je het algoritme aanpassen. Dat is de uitdaging bij
Bouw zelf.
Stelling 4
"Voor een lijst van 8 elementen zijn er maximaal 8 stappen nodig."
Antwoord
Onjuist. Voor 8 elementen zijn er maximaal 4 stappen nodig. Bij een lijst van 8:
- Na stap 1 blijven er 4 elementen over.
- Na stap 2 nog 2.
- Na stap 3 nog 1.
- Stap 4 vergelijkt dat laatste element, en dan ben je klaar.
Veel mensen schatten 3 omdat 2³ = 8, maar na 3 halveringen ligt er nog
één element dat je nog moet bekijken. Vandaar de vierde stap.
Het zou lineair zoeken zijn dat tot 8 stappen nodig heeft.
Stelling 5
"Bij elke stap valt ongeveer de helft van het zoekgebied af."
Antwoord
Juist. Ongeveer, niet precies: bij een oneven aantal elementen is de ene helft één groter dan de andere, en het midden zelf valt ook af. Voor het idee maakt dat niet uit: elke stap laat ongeveer de helft over.
Stelling 6
"Binair zoeken is een soort recept dat je in je hoofd kunt uitvoeren, op elke gesorteerde lijst."
Antwoord
Juist. Een algoritme is precies dat: een stappenplan dat je
mechanisch kunt volgen. Probeer het zelf: gesorteerde lijst maken, doel
kiezen, met pen en papier de stappen volgen. Snap je hoe laag, hoog en
midden veranderen, dan snap je het algoritme.
Door naar de eerste bouwsteen.