Een inleiding tot het invoegsorteeralgoritme

Een inleiding tot het invoegsorteeralgoritme

Insertion Sort is een techniek die werkt door een gesorteerde sublijst te gebruiken en er continu een waarde aan toe te voegen uit de ongesorteerde lijst totdat de hele lijst is gesorteerd.





Het algoritme begint met het eerste lijstitem als de gesorteerde sublijst. Vervolgens vergelijkt het het volgende nummer met het eerste. Als het groter is, wordt het in de eerste index ingevoegd. Anders blijft het in de index.





De derde waarde wordt vervolgens vergeleken met de andere twee en vervolgens in de juiste index ingevoegd. Dit proces gaat door totdat de hele lijst is gesorteerd.





Een nadere blik op invoegsortering

De bovenstaande beschrijving is misschien niet logisch voor u geweest. Een voorbeeld zou je veel beter moeten helpen begrijpen.

Stel dat je een lijst hebt: [39, 6, 2, 51, 30, 42, 7].



Het algoritme identificeert 39 als de eerste waarde van de gesorteerde sublijst. Evaluatie gaat dan door naar de tweede positie.

Gerelateerd: Dynamisch programmeren: voorbeelden, veelvoorkomende problemen en oplossingen





6 wordt dan vergeleken met 39. Aangezien 6 kleiner is dan 39, wordt 6 ingevoegd in de eerste positie en 39 in de tweede. De nieuwe lijstvolgorde is na de eerste doorgang nu:

[6, 39, 2, 51, 30, 42, 7]





Evaluatie verschuift nu naar de derde positie. 2 wordt vergeleken met de laatste twee cijfers en vervolgens op de juiste positie ingevoegd. De nieuwe lijstvolgorde is na de tweede pas nu:

[2, 6, 39, 51, 30, 42, 7]

Voor de derde pas is de lijstvolgorde:

[2, 6, 39, 51, 30, 42, 7]

Het proces wordt herhaald totdat de hele lijst is gesorteerd.

Zie het onderstaande diagram dat deze bewerkingen samenvat:

Algoritme analyse

De tijdscomplexiteit van Insertion Sort is O(n2), net als bellen sorteren . Het aantal vergelijkingen in het worstcasescenario is de som van alle gehele getallen van 1 tot (n-1), wat een kwadratische som oplevert.

Code-implementatie

De onderstaande Python- en Java-code laat zien hoe u de methode Insertion Sort kunt implementeren.

Python:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

Java:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

Beter coderen met pseudocode

De bovenstaande codevoorbeelden zijn gegeven zonder enige pseudocode waarnaar u kunt verwijzen om dit algoritme in andere talen te schrijven. De meeste programmeurs (inclusief de auteur) rennen graag naar hun toetsenbord nadat ze 'gefluister' hebben gehoord over hoe een programma werkt.

Deze aanpak is helaas gevoelig voor fouten naarmate de programmalogica ingewikkelder wordt. Hoe zou je je programmeerspel willen verbeteren door pseudocode te leren gebruiken?

Deel Deel Tweeten E-mail Wat is Pseudocode en hoe maakt het u een betere ontwikkelaar?

Moeite om te leren programmeren? Krijg grip op code door pseudocode te leren. Maar wat is pseudocode en kan het echt helpen?

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Java
  • Python
  • Codeerhandleidingen
Over de auteur Jerome Davidson(22 artikelen gepubliceerd)

Jerome is een stafschrijver bij MakeUseOf. Hij behandelt artikelen over programmeren en Linux. Hij is ook een crypto-enthousiasteling en houdt de crypto-industrie altijd in de gaten.

waar gratis muziek te downloaden
Meer van Jerome Davidson

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren