💻 Programmeeroefening – Plaats één element op de juiste plek (Insertion sort stap)

In deze oefening ga je één stap uitvoeren van het sorteeralgoritme insertion sort.

Je krijgt een lijst waarin een deel al gesorteerd is van klein naar groot. Het laatste deel is nog niet goed geplaatst.

Jouw taak: zorg ervoor dat één element op de juiste plaats terechtkomt in het gesorteerde deel.


🧠 Idee achter de oefening

Stel je de lijst voor als een rij leerlingen:

  • De leerlingen voor een bepaalde positie staan al netjes op volgorde (gesorteerd).
  • De leerling op positie_zittend staat nog niet op zijn juiste plaats.
  • Die leerling moet “naar links schuiven” tot hij op de juiste plek staat.

🛠 Wat moet je doen in de functie?

Schrijf een functie:

wissel_tot_juiste_plaats(rij, positie_zittend)

Die doet het volgende:

  1. Kijk naar het element op index positie_zittend. 👉 Dit is het element dat nog niet op zijn juiste plaats staat.

  2. Vergelijk dit element met de elementen ervoor (dus met kleinere indexen).

  3. Zolang het element:
    • niet helemaal vooraan staat, én
    • kleiner is dan het element ervoor,

    dan moet je het verwisselen met het element ervoor.

  4. Herhaal dit totdat het element op zijn juiste plaats staat in het gesorteerde deel.

🔁 Belangrijk om te begrijpen
  • Je past de lijst zelf aan (je maakt geen nieuwe lijst).
  • Je werkt alleen met het stuk links van positie_zittend + dat ene element.
  • Alles links van dat stuk is al correct gesorteerd en mag je als “kloppend” beschouwen.

🔧 Hulpfunctie die je mag gebruiken

Je mag elementen van plaats wisselen met deze functie:

def wissel(lijst, index1, index2):
    tijdelijk = lijst[index1]
    lijst[index1] = lijst[index2]
    lijst[index2] = tijdelijk

📌 Voorbeelden uitgelegd

👉 Voorbeeld 1:

wissel_tot_juiste_plaats([20, 40, 10, 30], 2)
  • Het element op index 2 is 10
  • Links ervan staat [20, 40] (dit is al gesorteerd)
  • 10 moet helemaal naar voren schuiven

Resultaat:

[10, 20, 40, 30]

👉 Voorbeeld 2:

wissel_tot_juiste_plaats([20, 40, 10, 30], 1)
  • Het element op index 1 is 40
  • Links staat [20]
  • 40 staat al op de juiste plaats → er gebeurt niets

Resultaat:

[20, 40, 10, 30]

💡 Tip: denk niet “sorteren van de hele lijst”, maar enkel “één leerling op de juiste plaats zetten in een al nette rij”.