Ga naar hoofdinhoud

Stellingen — toets je begrip

Leerdoel: je toetst of je het idee van "onthouden en updaten" snapt voordat je gaat programmeren.

Stelling 1

"Je moet eerst de hele lijst sorteren om het maximum te vinden."

Antwoord

Onjuist. Sorteren kost veel meer werk dan één keer door de lijst lopen, en dat ene rondje is genoeg om het maximum te vinden. Sorteren is overdreven.

Stelling 2

"Je hebt minstens n vergelijkingen nodig om het maximum te vinden in een lijst van n elementen."

Antwoord

Onjuist — je hebt er één minder nodig. Met n − 1 vergelijkingen kan het al: het eerste element is je startwaarde (geen vergelijking nodig), en daarna vergelijk je elk van de overige n − 1 elementen ermee.

Minder kan niet — anders weet je niet zeker of het overgeslagen element niet groter was.

Stelling 3

"Als het eerste element heel groot is, hoef je de rest niet meer te bekijken."

Antwoord

Onjuist. Hoe groot het eerste element ook is, ergens verderop kan een nog groter getal staan. Je weet pas zeker wat het maximum is als je álle elementen hebt gezien. Anders dan bij zoeken is er hier geen moment waarop je eerder mag stoppen.

Stelling 4

"Als de waarde meerdere keren voorkomt (bijv. [5, 3, 5, 2]), is het maximum nog steeds gewoon 5."

Antwoord

Juist. Het maximum is gewoon de grootste waarde — duplicaten doen er niet toe. Welke index je krijgt als je vraagt om de index van het maximum hangt wel af van je code (meestal: de eerste, soms de laatste). Maar de waarde is altijd hetzelfde.

Stelling 5

"Op een gesorteerde lijst kun je het maximum direct vinden zonder door de hele lijst te lopen."

Antwoord

Juist. Op een oplopend gesorteerde lijst is het maximum gewoon lijst[-1] (het laatste element). Eén vergelijking? Zelfs geen vergelijking — alleen een index-lookup. Voor zo'n lijst is dit algoritme overdreven.

Pas als je niet weet of de lijst gesorteerd is, moet je hem helemaal doorlopen.

Stelling 6

"Je kunt dit algoritme ook gebruiken om de kleinste waarde te vinden, door alleen een symbool aan te passen."

Antwoord

Juist. Vervang > door < (en hernoem max_tot_nu_toe naar min_tot_nu_toe) en je hebt vind-minimum. Het accumulator-patroon is symmetrisch.

Daar oefen je mee bij Aanpassen.

Door naar de eerste bouwsteen.