Ga naar hoofdinhoud

Bouwsteen 1 — vind de index van het kleinste

Hier bouw je op verder

Leerdoel: je past het accumulator-patroon uit vind het maximum aan om de index van het kleinste element te vinden.

Wat we willen

Een functie die de index teruggeeft van de plek waar de kleinste waarde staat. Niet de waarde zelf: om straks te kunnen ruilen moet je weten wáár het kleinste staat.

Voorspel

Wat denk je dat dit print?

def index_van_kleinste(lijst):
min_index = 0
for i, waarde in enumerate(lijst):
if waarde < lijst[min_index]:
min_index = i
return min_index

print(index_van_kleinste([5, 2, 8, 1, 4]))
print(index_van_kleinste([10, 20, 30]))
print(index_van_kleinste([3, 3, 3]))
Antwoord
3
0
0
  • In [5, 2, 8, 1, 4] staat de 1 op index 3, dus 3.
  • In [10, 20, 30] staat de 10 vooraan, dus 0.
  • In [3, 3, 3] wint de eerste, want de vergelijking is < en niet <=.

Run

Python
Code-omgeving wordt voorbereid…

Vergelijking met vind het maximum

Bijna hetzelfde:

vind maxvind min-index
Variabele houdt bijwaardeindex
Vergelijking><
Updatemaximum = waardemin_index = i
Returnmaximummin_index

Twee verschillen dus: je houdt een index bij in plaats van een waarde, en je vergelijkt met < in plaats van >. Het patroon eronder is hetzelfde.

Experimenteer

Probeer ook negatieve lijsten en lege lijsten:

Python
Code-omgeving wordt voorbereid…

Een lege lijst geeft ook 0, en dat is een leugen: index 0 bestaat niet. De functie crasht niet, want lijst[min_index] wordt alleen gelezen in de lus, en die doet bij een lege lijst nul rondes. Voor selection sort maakt het niet uit, die roept de functie nooit met een lege lijst aan.

Wat nu nog mist

Je kunt nu het kleinste vinden in de hele lijst. Selection sort moet ook kunnen zoeken vanaf een bepaalde positie, en dat is bouwsteen 3.

Eerst de andere helft van het algoritme: swappen.

Door naar bouwsteen 2: swappen.