Ga naar hoofdinhoud

Bouwsteen 1 — vergelijk twee buren

Hier bouw je op verder

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

Python
Code-omgeving wordt voorbereid…

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:

Python
Code-omgeving wordt voorbereid…
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.