Ga naar hoofdinhoud

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

Python
Code-omgeving wordt voorbereid…

Onderzoek

Probeer in elk geval:

  1. Strings sorteren — werkt dat?
  2. Een lijst met duplicaten — wat gebeurt er met gelijke waardes?
  3. Stabiliteit: als je (1, 'a'), (1, 'b') sorteert op het eerste element, blijft de oorspronkelijke volgorde dan behouden?
Python
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?

LijstgrootteVergelijkingenSwaps
5105
104510
1004950100
1.000~500.0001.000
10.000~50.000.00010.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 →