
Insertion sort is eensorteeralgoritme.

Het begint door de eerste twee elementen uit de set te sorteren. Als deze op hun plaats staan, voegen we het derde element op de juiste plaats toe. Dit doen we totdat we alle elementen op hun plaats hebben gezet.
Dit is eigenlijk de manier waarop een speler zijn kaarten schikt bij eenkaartspel. Vandaar dat deze routine ook deCardsort genoemd wordt.
De tijdscomplexiteit is O(n²) in de meeste gevallen en in het beste geval, als de waarden al bijna gesorteerd zijn, is de tijdscomplexiteit O(n).
Een voorbeeld inC++ van insertion sort.
template<typenameT>voidinsertion_sort(vector<T>&v){for(inti=1;i<v.size();i++){// de i eerste elementen staan reeds in volgordeThulp=v[i];// we halen het i-de element er uit.intj=i-1;while(j>=0&&hulp<v[j]){// alle elementen groter dan het i-de element worden 1 plaats naar rechts opgeschovenv[j+1]=v[j];j--;}v[j+1]=hulp;// we voegen het uitgehaalde in op zijn juiste plaats.}}
Een alternatieve implementatie:
for(autoi=start;i!=end;++i)std::rotate(std::upper_bound(start,i,*i),i,std::next(i));
Een voorbeeld in Csharp van insertion sort.
Je doorloopt de hele tabel, per te controleren getal(1):
1) Houd je de inhoud bij van dit getal(1)
2) zolang dat er een getal links(2) van het te sorteren getal(1) staat, controleer je als deze(1) kleiner is
3) indien Ja, dan verplaats je dit getal(2) naar de plaats waar je te sorteren getal staat (1)
4) terug stap 2 tot je niet meer kan
5) waar de index beland is, plaats je het te sorteren getal die op dit moment gesorteerd is.
publicvoidInsertionSort(int[]Tabel){intX;for(intI=1;I<Tabel.Length;I++){X=Tabel[I];while((I-1>=0)&&(X<Tabel[I-1])){Tabel[I]=Tabel[I-1];I--;}Tabel[I]=X;}}/*InsertionSort*/
In Python wordt dit:
definsertionsort(rij):foriinrange(len(rij)):#Overloop kaart per kaart het ongesorteerd gedeeltewaarde=rij[i]#Neem kaart i in de rechterhandforjinrange(0,i):#Vergelijk de kaart met de kaarten in het gesorteerde deelifwaarde<rij[j]:#Heb je de positie van je kaart gevonden,waarde,rij[j]=rij[j],waarde#Verwissel die en loop verder met nieuwe kaartrij[i]=waarde#Kaart in rechterhand na overlopen hoort op positie i
Een voorbeeld inJavaScript van insertion sort.
functioninsertionSort(rij){for(vari=1;i<rij.length;i++){varhulp=rij[i];varj=i-1;while(j>=0&&rij[j]>hulp){rij[j+1]=rij[j];j--;}rij[j+1]=hulp;}returnrij;}