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

Er hoeft maar één vergelijking anders. En als je toch bezig bent: de naam min_index klopt dan niet meer, max_index past beter.

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 anders, van < naar >, plus de variabelenaam. Verder is de code identiek.

Het is dezelfde symmetrie als tussen vind-maximum en vind-minimum: het patroon blijft staan, alleen de richting van de vergelijking draait om.

Door naar bouw zelf.