Bouwsteen 1 — vergelijk twee buren
Hier bouw je op verder
- Python De for-loop
- Python Lijsten
- Python If en else
- Python F-strings
Leerdoel: je kunt twee opeenvolgende elementen vergelijken en detecteren of ze fout staan.
Wat we willen
Twee buren in een lijst: lijst[i] en lijst[i+1]. We willen weten of
ze in de goede volgorde staan, dus de kleinste links.
Voorspel
Wat denk je dat dit print?
lijst = [3, 1, 4, 1, 5]
i = 0
if lijst[i] > lijst[i + 1]:
print(f"{lijst[i]} en {lijst[i+1]} staan fout")
else:
print(f"{lijst[i]} en {lijst[i+1]} staan goed")
Antwoord
3 en 1 staan fout
lijst[0] is 3 en lijst[1] is 1. Omdat 3 groter is dan 1, komt de tak
"staan fout" aan de beurt.
Run
Let op lijst[i + 1]
Elke vergelijking pakt twee opeenvolgende indexen, i en i + 1.
Daarmee komt deze regel:
if lijst[i] > lijst[i + 1]:
i + 1 moet wel een index zijn die bestaat, dus i mag hoogstens
len(lijst) - 2 zijn. Anders krijg je een IndexError op lijst[i + 1].
We komen daar in bouwsteen 3 op terug — daar wordt de lus-grens precies goed gezet.
Experimenteer
Probeer verschillende waardes van i:
Wat zie je?
i=0: 3>1 → fout
i=1: 1<=4 → goed
i=2: 4>1 → fout
i=3: 1<=5 → goed
Bij i=4 zou het mislopen: lijst[5] bestaat niet. Daarom stoppen we
de lus bij i = 3.
Wat nu nog mist
Je ziet nu wel dat een paar fout staat, maar er gebeurt niets mee. In de volgende stap ruil je de twee buren om, net als bij selection sort.
Door naar bouwsteen 2: swap.