En introduktion till införingssorteringsalgoritmen

En introduktion till införingssorteringsalgoritmen

Insättningssortering är en teknik som fungerar genom att använda en sorterad underlista och kontinuerligt lägga till ett värde från den osorterade listan tills hela listan är sorterad.





Algoritmen börjar med det första listobjektet som den sorterade underlistan. Den jämför sedan nästa tal med det första. Om det är större, sätts det in i det första indexet. Annars är det kvar i sitt index.





Det tredje värdet jämförs sedan med de andra två och sätts sedan in i rätt index. Denna process fortsätter tills hela listan är sorterad.





En närmare titt på införingssortering

Beskrivningen ovan kanske inte var vettig för dig. Ett exempel bör hjälpa dig att förstå mycket bättre.

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



Algoritmen identifierar 39 som det första värdet för den sorterade underlistan. Utvärderingen går sedan vidare till den andra positionen.

Relaterat: Dynamisk programmering: Exempel, vanliga problem och lösningar





6 jämförs sedan med 39. Eftersom 6 är mindre än 39 sätts 6 in i det första läget och 39 i det andra. Den nya listorder är efter det första passet är nu:

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





Utvärderingen övergår nu till den tredje positionen. 2 jämförs med de två sista siffrorna och infogas sedan i rätt position. Den nya listorderna är efter det andra passet nu:

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

För det tredje passet är listordningen:

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

Processen upprepas tills hela listan är sorterad.

Se diagrammet nedan som sammanfattar dessa operationer:

Algoritm analys

Tidskomplexiteten för Insertion Sort är O (n2), precis som bubbla sortera . Antalet jämförelser i värsta fall är summan av alla heltal från 1 till (n-1), vilket ger en kvadratisk summa.

Kodimplementering

Python- och Java -koden nedan visar hur du kan implementera Insertion Sort -metoden.

Pytonorm:

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

Bättre kodning med pseudokod

Kodexemplen ovan gavs utan någon pseudokod som du kan referera till för att skriva denna algoritm på andra språk. De flesta programmerare (författaren ingår) gillar att springa till sina tangentbord efter att ha fått veta 'viskar' om hur ett program fungerar.

Detta tillvägagångssätt är tyvärr utsatt för fel eftersom programlogiken blir mer komplicerad. Hur skulle du vilja öka ditt programmeringsspel genom att lära dig att använda pseudokod?

Dela med sig Dela med sig Tweet E-post Vad är Pseudocode och hur gör det dig till en bättre utvecklare?

Kämpar du för att lära dig programmering? Ta tag i koden genom att lära dig pseudokod. Men vad är pseudokod och kan det verkligen hjälpa?

Läs Nästa
Relaterade ämnen
  • Programmering
  • Java
  • Pytonorm
  • Handledning för kodning
Om författaren Jerome Davidson(22 artiklar publicerade)

Jerome är personalförfattare på MakeUseOf. Han täcker artiklar om programmering och Linux. Han är också en kryptoentusiast och håller alltid koll på kryptoindustrin.

ställa in ny e -postadress
Mer från Jerome Davidson

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera