Stellingen — toets je begrip
Leerdoel: je toetst of je het idee van meerdere accumulators in één pass snapt.
Stelling 1
"Eerst het maximum vinden en daarna het minimum is sneller dan beide tegelijk."
Antwoord
Onjuist. Twee aparte passes lezen elk element twee keer. Eén pass
leest elk element één keer en doet meteen beide vergelijkingen. Het aantal
vergelijkingen is in beide gevallen ongeveer 2n; de winst zit in het
lezen, en bij grote data scheelt dat.
Stelling 2
"Voor het max-én-min-algoritme heb je twee aparte for-lussen nodig."
Antwoord
Onjuist. Dat is juist het hele punt: één for-lus, twee accumulators. Twee lussen zijn twee passes, en dan ben je terug bij aanpak A.
Stelling 3
"Beide accumulators moeten dezelfde startwaarde hebben."
Antwoord
Juist. Allebei beginnen op lijst[0]. Hierdoor weten we zeker dat
beide startwaardes echt voorkomen in de lijst — geen negatieve-getal-bug.
Bij klein = lijst[0] en groot = lijst[0] zijn de eerste paar
vergelijkingen meteen geldig.
Stelling 4
"Bij een lijst van één element zijn klein en groot gelijk."
Antwoord
Juist. Beide beginnen op lijst[0]. De for-lus doet één iteratie en
vergelijkt lijst[0] met zichzelf, en dat is niet groter en niet kleiner,
dus er verandert niets. Resultaat: klein == groot == lijst[0].
Stelling 5
"Als een getal kleiner is dan klein, hoef je niet meer te kijken of
het groter is dan groot."
Antwoord
Juist. klein is nooit groter dan groot. Een getal dat onder
klein zit, zit dus zeker ook onder groot, en die tweede vergelijking
kan niets meer opleveren. Dat scheelt een vergelijking per element; hoe je
dat in code opschrijft zie je in de bouwstenen.
Stelling 6
"Een functie kan maar één antwoord teruggeven, dus voor het minimum én het maximum heb je twee functies nodig."
Antwoord
Onjuist. Eén functie kan allebei teruggeven, als één pakketje van twee waarden. Hoe dat eruitziet in Python is bouwsteen 3 van dit hoofdstuk.
Door naar de eerste bouwsteen.