En introduktion til indsættelsessorteringsalgoritmen

En introduktion til indsættelsessorteringsalgoritmen

Insertion Sort er en teknik, der fungerer ved at bruge en sorteret underliste og løbende tilføje en værdi til den fra den usorterede liste, indtil hele listen er sorteret.





Algoritmen begynder med det første listeelement som den sorterede underliste. Det sammenligner derefter det næste tal med det første. Hvis det er større, indsættes det i det første indeks. Ellers er det tilbage i sit indeks.





Den tredje værdi sammenlignes derefter med de to andre og indsættes derefter i det korrekte indeks. Denne proces fortsætter, indtil hele listen er sorteret.





Et nærmere kig på indsættelsessortering

Beskrivelsen ovenfor har muligvis ikke givet mening for dig. Et eksempel skal hjælpe dig med at forstå meget bedre.

Antag, at du har en liste: [39, 6, 2, 51, 30, 42, 7].



Algoritmen identificerer 39 som den første værdi af den sorterede underliste. Evalueringen går derefter videre til den anden position.

Relateret: Dynamisk programmering: eksempler, almindelige problemer og løsninger





6 sammenlignes derefter med 39. Da 6 er mindre end 39, indsættes 6 i den første position og 39 i den anden. Den nye listeordre er efter det første pas er nu:

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





Evalueringen skifter nu til tredje position. 2 sammenlignes med de to sidste tal og derefter indsat i den rigtige position. Den nye listeorden er efter, at den anden pas er nu:

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

For det tredje pas er listeordren:

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

Processen gentages, indtil hele listen er sorteret.

Se diagrammet herunder, der opsummerer disse operationer:

Algoritme analyse

Tidskompleksiteten af ​​Insertion Sort er O (n2), ligesom boblesort . Antallet af sammenligninger i værste fald er summen af ​​alle heltal fra 1 til (n-1), hvilket giver en kvadratisk sum.

Kodeimplementering

Python- og Java -koden herunder viser, hvordan du kan implementere metoden til indsættelse af sortering.

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;
}
}

Bedre kodning med pseudokode

Kodeeksemplerne ovenfor blev givet uden nogen pseudokode, som du kan referere til for at skrive denne algoritme på andre sprog. De fleste programmører (forfatteren inkluderet) kan lide at løbe til deres tastaturer efter at have fået at vide 'hvisker' om, hvordan et program fungerer.

Denne tilgang er desværre tilbøjelig til fejl, da programlogikken bliver mere kompliceret. Hvordan vil du gerne niveauere dit programmeringsspil ved at lære at bruge pseudokode?

Del Del Tweet E -mail Hvad er Pseudocode, og hvordan gør det dig til en bedre udvikler?

Kæmper du for at lære programmering? Få styr på koden ved at lære pseudokode. Men hvad er pseudokode, og kan det virkelig hjælpe?

Læs Næste
Relaterede emner
  • Programmering
  • Java
  • Python
  • Kodning Tutorials
Om forfatteren Jerome Davidson(22 artikler udgivet)

Jerome er personaleforfatter på MakeUseOf. Han dækker artikler om programmering og Linux. Han er også en kryptoentusiast og holder altid øje med kryptoindustrien.

kan ikke få adgang til ekstern harddisk windows 10
Mere fra Jerome Davidson

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere