Het complete algoritme
Leerdoel: je ziet alle bouwstenen samen en onderzoekt het algoritme.
Alles samen
def selection_sort(lijst):
n = len(lijst)
for i in range(n):
min_index = i
for j in range(i, n):
if lijst[j] < lijst[min_index]:
min_index = j
lijst[i], lijst[min_index] = lijst[min_index], lijst[i]
return lijst
Zie je de bouwstenen?
- Regels 4-7 → bouwstenen 1 + 3: vind index van kleinste, vanaf
positie
i. - Regel 8 → bouwsteen 2: swap.
- Regels 3-8 → bouwsteen 4: buitenste lus die alles aan elkaar rijgt.
Run
Code-omgeving wordt voorbereid…
Onderzoek
Probeer in elk geval:
- Strings sorteren — werkt dat?
- Een lijst met duplicaten — wat gebeurt er met gelijke waardes?
- Stabiliteit: als je
(1, 'a'), (1, 'b')sorteert op het eerste element, blijft de oorspronkelijke volgorde dan behouden?
Code-omgeving wordt voorbereid…
Wat zie je?
- Strings → alfabetisch gesorteerd. Python kan strings met
<vergelijken. - Duplicaten → gewoon naast elkaar in het resultaat.
- Stabiliteit: bij
(1,b)en(1,d)kan de oorspronkelijke volgorde veranderen. Selection sort is niet stabiel — gelijke elementen kunnen van plek wisselen door een swap eerder in het algoritme.
Hoeveel werk doet dit?
| Lijstgrootte | Vergelijkingen | Swaps |
|---|---|---|
| 5 | 10 | 5 |
| 10 | 45 | 10 |
| 100 | 4950 | 100 |
| 1.000 | ~500.000 | 1.000 |
| 10.000 | ~50.000.000 | 10.000 |
Vergelijkingen groeien kwadratisch (n²/2). Swaps groeien lineair
(n). Voor grote lijsten is dat te traag — gebruik dan een betere
sorteer-algoritme (zoals merge sort, O(n log n)).
Maar voor educatieve doeleinden en kleine lijsten is selection sort prima.
Door naar stap 8: aanpassen →