Ga naar hoofdinhoud

Aanpassen — sorteer aflopend

Leerdoel: je past selection sort aan zodat hij sorteert van groot naar klein in plaats van klein naar groot.

Opdracht

Pas selection_sort aan zodat het resultaat aflopend is.

  • selection_sort_aflopend([5, 2, 8, 1, 4])[8, 5, 4, 2, 1]
  • selection_sort_aflopend([3, 1, 4, 1, 5, 9, 2, 6])[9, 6, 5, 4, 3, 2, 1, 1]

Hint: in plaats van de kleinste vooraan zetten, zet je de grootste vooraan.

Python
Code-omgeving wordt voorbereid…
Tip

Slechts één vergelijking moet anders. En misschien vind je het netter om de variabele min_index te hernoemen naar max_index — semantisch beter passend.

Antwoord
def selection_sort_aflopend(lijst):
n = len(lijst)
for i in range(n):
max_index = i
for j in range(i, n):
if lijst[j] > lijst[max_index]: # < werd >
max_index = j
lijst[i], lijst[max_index] = lijst[max_index], lijst[i]
return lijst

Eén teken (<>) en de variabelenaam. Verder identiek.

Dit is dezelfde symmetrie als bij vind-max → vind-min: het patroon blijft, alleen de richting van de vergelijking draait om.

Door naar stap 9: bouw zelf →