Bouwsteen 5 — niet gevonden en alles in een functie
Leerdoel: je verpakt het algoritme in een functie en geeft -1 terug
als het doel niet voorkomt.
Wat we willen
Twee dingen samen:
- Functie met parameters
lijstendoel. Returnt de index, of-1. - Return-statements vervangen het
print+breakvan de vorige stap.
Predict
Wat denk je dat dit print?
def binair_zoek(lijst, doel):
laag = 0
hoog = len(lijst) - 1
while laag <= hoog:
midden = (laag + hoog) // 2
if lijst[midden] == doel:
return midden
elif lijst[midden] < doel:
laag = midden + 1
else:
hoog = midden - 1
return -1
print(binair_zoek([1, 3, 5, 7, 9, 11, 13, 15], 11))
print(binair_zoek([1, 3, 5, 7, 9, 11, 13, 15], 4))
Antwoord
5
-1
- 11 staat op index 5 — gevonden bij stap 2 →
return 5. - 4 staat er niet in — de while-lus stopt zonder match → de regel
return -1wordt bereikt.
Run
Code-omgeving wordt voorbereid…
Waar staat return -1?
Net als bij lineair zoeken: return -1 staat buiten de while-lus, op
functie-niveau. Hij wordt alleen bereikt als de hele while-lus is afgelopen
zonder een return midden.
Visueel (let op de inspringing):
def binair_zoek(lijst, doel): # 0 spaties
laag = 0 # 4 spaties
...
while laag <= hoog: # 4 spaties
midden = (laag + hoog) // 2 # 8 spaties (in while)
if lijst[midden] == doel: # 8 spaties
return midden # 12 spaties (in if)
...
return -1 # 4 spaties (na while)
Wat nu?
Je hebt alle bouwstenen. In de volgende stap zie je ze samen en kun je het algoritme als geheel onderzoeken.
Door naar stap 8: het complete algoritme →