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
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.
Code-omgeving wordt voorbereid…
Wat zie je?
Het exacte aantal hangt af van de willekeurige lijst. Maar:
- Eén pass: ergens tussen
nen2nvergelijkingen (afhankelijk van hoe vaak deelsewordt bereikt). - Twee passes: precies
2nvergelijkingen.
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 →