Ga naar hoofdinhoud

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.