Ga naar hoofdinhoud

Het complete algoritme

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

Alles samen

def max_en_min(lijst):
klein = groot = lijst[0]
for waarde in lijst:
if waarde < klein:
klein = waarde
elif waarde > groot:
groot = waarde
return klein, groot

Zes regels. Vergelijk dat eens met de combinatie van twee aparte vind-maximum + vind-minimum functies — daar had je twee aparte for-lussen voor nodig. Hier doen we het in één.

Run

Python
Code-omgeving wordt voorbereid…

Onderzoek — tel de vergelijkingen

Hoeveel werk doet ons algoritme? We bouwen een teller-versie en vergelijken hem met twee-aparte-passes.

Python
Code-omgeving wordt voorbereid…
Wat zie je?

Het exacte aantal hangt af van de willekeurige lijst. Maar:

  • Eén pass: ergens tussen n en 2n vergelijkingen (afhankelijk van hoe vaak de else wordt bereikt).
  • Twee passes: precies 2n vergelijkingen.

De winst is dus: tussen 0% en ~50% minder vergelijkingen. Bij willekeurige data ligt het ergens in het midden.

En: de éne-pass-versie leest elk element één keer in plaats van twee keer. Bij grote data (of trage data-bronnen) is dat een echte besparing.

Door naar stap 7: aanpassen →