Klassiek binair zoeken zonder fouten
De lus voor low, high en mid goed opzetten
Klassiek binair zoeken zonder fouten is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Halveer de zoekruimte
Binair zoeken vindt een waarde in een gesorteerde lijst door het bereik bij elke stap te halveren. Zo wordt een trage scan van O(n) een snelle zoekactie van O(log n).
a = [1, 3, 5, 7, 9] # must be sortedGesorteerd is de enige voorwaarde
Binair zoeken werkt alleen op gesorteerde gegevens. Als de lijst niet geordend is, moet je die eerst sorteren; anders is het resultaat betekenisloos en fout.
a.sort() # ascending order requiredTwee grenzen
Begin met twee pointers: low op index 0 en high op de laatste index. De doelwaarde bevindt zich, als die aanwezig is, altijd daartussen.
low, high = 0, len(a) - 1Vind het midden veilig
Bereken mid als low + (high - low) // 2. In Python is overflow geen probleem, maar deze vorm is overal een veilige gewoonte.
mid = low + (high - low) // 2Drie uitkomsten
Vergelijk a[mid] met de doelwaarde. Je hebt de waarde gevonden, de waarde is te klein of de waarde is te groot. Elk geval verkleint het bereik op een andere manier.
if a[mid] == target:
return midTe klein, ga naar rechts
Als a[mid] kleiner is dan de doelwaarde, moet het antwoord rechts staan. Verplaats low naar mid + 1 en gooi de linkerhelft weg.
elif a[mid] < target:
low = mid + 1Te groot, ga naar links
Als a[mid] groter is dan de doelwaarde, zoek je in de linkerhelft. Verplaats high naar mid - 1, zodat je mid nooit opnieuw controleert.
else:
high = mid - 1De lusvoorwaarde
Ga door zolang low kleiner dan of gelijk aan high is. Zodra ze elkaar kruisen, is het bereik leeg en staat de doelwaarde er niet in.
while low <= high:
mid = low + (high - low) // 2Meld dat de waarde niet is gevonden
Als de lus eindigt zonder overeenkomst, ontbreekt de waarde. Geef -1 terug als vaste afspraak, zodat aanroepen succes en mislukking van elkaar kunnen onderscheiden.
return -1 # target not in listDe valkuil van één te veel of te weinig
De klassieke fout is dat je de +1 of -1 vergeet wanneer je een pointer verplaatst. Laat je die weg, dan wordt mid eindeloos opnieuw gecontroleerd en ontstaat er een oneindige lus.
low = mid + 1 # not low = midGebruik de bibliotheek wanneer dat kan
Voor een eenvoudige controle of een waarde voorkomt, bevat Pythons module bisect al foutvrij zoekwerk. Schrijf de lus alleen zelf als je aangepaste logica nodig hebt.
import bisect
i = bisect.bisect_left(a, target)Korte controle
Denk na over wat de lus correct houdt.
Samenvatting: zoeken zonder fouten
Je kunt nu low en high instellen, mid veilig berekenen, de juiste kant verkleinen en de valkuil van één te veel of te weinig vermijden. Je beheerst logaritmisch zoeken. 🎯
Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 90
- Lessen
- 360
Veelgestelde vragen
Is de les “Klassiek binair zoeken zonder fouten” gratis?
Ja — de volledige tekst van “Klassiek binair zoeken zonder fouten” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wat leer ik in “Klassiek binair zoeken zonder fouten”?
De lus voor low, high en mid goed opzetten Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Klassiek binair zoeken zonder fouten”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?
Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Klassiek binair zoeken zonder fouten
- bisect_left en bisect_right
- Eerste True: binair zoeken op predicaat
- Binair zoeken naar het antwoord