๐ป Programmeeroefening โ Behoud de originele lijst
In deze oefening ga je een lijst sorteren zonder de oorspronkelijke lijst te veranderen.
In plaats van elementen te verplaatsen (zoals bij insertion sort), ga je een nieuwe lijst opbouwen waarin je telkens het juiste volgende element toevoegt.
๐ง Idee achter het algoritme
Dit lijkt op selection sort, maar met een belangrijk verschil:
๐ Je maakt een nieuwe, lege lijst en vult die stap voor stap.
Hoe?
- Je zoekt telkens het kleinste element dat je nog niet gebruikt hebt.
- Dat voeg je toe aan je nieuwe lijst.
- Daarna zoek je het volgende element dat iets groter is, enzovoort.
๐ Wat moet je doen?
Schrijf de functie:
selection_sort(lijst)Die:
- Een nieuwe lege lijst maakt (bijvoorbeeld
gesorteerd = [])- Stap voor stap de juiste elementen toevoegt aan deze lijst
- Op het einde de nieuwe gesorteerde lijst teruggeeft
๐ซ De originele lijst
lijstmag je niet aanpassen.
๐ง Hulpfunctie die je moet gebruiken
Je kan gebruikmaken van de oplossing van vorige oefening:
def kleinste_element_groter_dan(lijst, ondergrens): kleinste_index = None for i in range(len(lijst)): if ondergrens is None or lijst[i] > ondergrens: if kleinste_index is None or lijst[i] < lijst[kleinste_index]: kleinste_index = i return kleinste_indexDeze functie helpt je enorm:
- Ze geeft de index van het kleinste element dat groter is dan
waarde- Als
waarde = None, krijg je het kleinste element van de hele lijst
๐ Hoe bouw je de oplossing op?
Denk in stappen:
Start met
waarde = None๐ Je zoekt dus het allerkleinste elementGebruik de hulpfunctie om de index van dat element te vinden
Voeg dat element toe aan je nieuwe lijst
Bewaar de waarde van dat element als nieuwe
waardeZoek nu het volgende element dat groter is dan deze waarde
Herhaal dit tot je alle elementen hebt toegevoegd
๐งช Voorbeeld stap voor stap
selection_sort([7, 3, 9, 5])We bouwen een nieuwe lijst op:
- Start:
gesorteerd = [],waarde = None
Zoek kleinste โ
3โ voeg toe
gesorteerd = [3],waarde = 3Zoek kleinste > 3 โ
5โ voeg toe
gesorteerd = [3, 5],waarde = 5Zoek kleinste > 5 โ
7โ voeg toe
gesorteerd = [3, 5, 7],waarde = 7Zoek kleinste > 7 โ
9โ voeg toe
gesorteerd = [3, 5, 7, 9]Resultaat:
[3, 5, 7, 9]
โ ๏ธ Belangrijk om te begrijpen
- Je gebruikt de originele lijst enkel om te lezen, niet om te veranderen.
- Je houdt zelf bij wat het โlaatst gekozen elementโ is (
waarde).- Je bouwt de oplossing volledig op in een nieuwe lijst.
๐ก Tip: denk niet โik sorteer de lijstโ, maar โik kies telkens het volgende juiste element en leg het in een nieuwe rijโ.