Het complete algoritme
Leerdoel: je herkent alle bouwstenen samen werken en onderzoekt het algoritme als geheel.
Alles samen
def vind_maximum(lijst):
maximum = lijst[0]
for waarde in lijst:
if waarde > maximum:
maximum = waarde
return maximum
Zie je de bouwstenen?
- Regel 2 → bouwsteen 3: startwaarde is
lijst[0](veilig). - Regel 3 → bouwsteen 2: door de lijst lopen.
- Regels 4-5 → bouwsteen 1: vergelijken en bij update overschrijven.
- Regel 6 → het resultaat teruggeven.
Run
Code-omgeving wordt voorbereid…
Onderzoek
Speel met de code. Probeer in elk geval:
- Wat gebeurt er op een lege lijst
[]? - Wat gebeurt er op een lijst van strings:
["banaan", "appel", "kers"]? - Wat gebeurt er op een gemengde lijst:
[1, "twee", 3]?
Code-omgeving wordt voorbereid…
Wat zie je?
- Strings → werkt! Alfabetisch vergelijken:
'k' > 'b' > 'a', dus "kers" > "banaan" > "appel" → outputkers. Python kan strings vergelijken met<en>(alfabetisch). - Lege lijst →
IndexErroroplijst[0]. Ons algoritme heeft geen bescherming. - Gemengd →
TypeError: '>' not supported between instances of 'str' and 'int'. Je kunt 1 niet met "twee" vergelijken.
Hoeveel werk doet dit?
Voor n elementen doet ons algoritme n vergelijkingen (we
vergelijken óók lijst[0] met zichzelf, één extra). Dat is O(n) —
lineair in de lijstgrootte.
Wil je écht minimaal werk? Sla de eerste over (zie stap 5
voor lijst[1:]). Dan zijn het n − 1 vergelijkingen. Maar O(n) blijft
O(n) — die ene vergelijking maakt geen verschil voor de groeisnelheid.
Een korte reflectie
Met drie bouwstenen heb je iets gemaakt dat:
- ✅ Werkt op elke niet-lege lijst van vergelijkbare elementen.
- ✅ Geen aanname maakt over volgorde (gesorteerd of niet).
- ⚠️ Crasht bij een lege lijst (geen
lijst[0]mogelijk).
Tijd om er een variant van te maken.
Door naar stap 7: aanpassen →