Ga naar hoofdinhoud

Het complete algoritme

Hier bouw je op verder

Leerdoel: je ziet alle bouwstenen samen werken en onderzoekt het algoritme als geheel.

Alles samen

In de bouwstenen heette de variabele max_tot_nu_toe, want dat is precies wat hij is: het maximum tot nu toe. Nu de functie af is, is maximum korter en even duidelijk.

def vind_maximum(lijst):
maximum = lijst[0]
for waarde in lijst:
if waarde > maximum:
maximum = waarde
return maximum
  1. Regel 2:

    Bouwsteen 3 — de startwaarde is lijst[0]: gegarandeerd een echte waarde uit de lijst, dus ook veilig bij louter negatieve getallen.

  2. Regel 3:

    Bouwsteen 2 — door de lijst lopen, elke waarde precies één keer.

  3. Regel 4-5:

    Bouwsteen 1 — vergelijken met de kampioen tot nu toe, en bij een grotere waarde overschrijven.

  4. Regel 6:

    Het resultaat teruggeven — ná de lus, dus pas als alles bekeken is.

Run

Python
Code-omgeving wordt voorbereid…

Interactief model

Vind het maximum

Onthoud de grootste waarde tot nu toe.

Bron referentieStap 0/5Vergelijkingen 0Resultaat 3
03max
17
22
39
44

Startwaarde

We starten met 3 als grootste tot nu toe.

Onderzoek

Speel met de code. Probeer in elk geval:

  1. Wat gebeurt er op een lege lijst []?
  2. En op een lijst met strings, ["banaan", "appel", "kers"]?
  3. En op een gemengde lijst, [1, "twee", 3]?
Python
Code-omgeving wordt voorbereid…
Wat zie je?

Strings → werkt. Alfabetisch vergelijken: 'k' > 'b' > 'a', dus "kers" > "banaan" > "appel" → output kers. Python kan strings vergelijken met < en > (alfabetisch).

Lege lijst → IndexError op lijst[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 dit algoritme n vergelijkingen; lijst[0] wordt ook één keer met zichzelf vergeleken. Dat is O(n): lineair in de lijstgrootte.

Wil je écht minimaal werk? Sla het eerste element over met lijst[1:] (zie bouwsteen 3). Dan zijn het n − 1 vergelijkingen. Maar O(n) blijft O(n) — die ene vergelijking maakt geen verschil voor de groeisnelheid.

Door naar aanpassen.