Uvod u algoritam sortiranja umetanja

Uvod u algoritam sortiranja umetanja

Razvrstavanje umetanjem tehnika je koja funkcionira tako da koristi razvrstani podpopis i neprestano mu dodaje vrijednost s nerazvrstanog popisa dok se cijeli popis ne sortira.





Algoritam počinje s prvom stavkom popisa kao razvrstanom potpopisom. Zatim uspoređuje sljedeći broj s prvim. Ako je veća, umetnuta je u prvi indeks. Inače, ostaje u indeksu.





Treća vrijednost se zatim uspoređuje s ostale dvije, a zatim se ubacuje u ispravan indeks. Ovaj proces traje sve dok se cijeli popis ne sortira.





Bliži pogled na sortiranje umetanja

Gore navedeni opis vam možda nije imao smisla. Primjer bi vam trebao pomoći da bolje razumijete.

Pretpostavimo da imate popis: [39, 6, 2, 51, 30, 42, 7].



Algoritam identificira 39 kao prvu vrijednost razvrstanog podlista. Evaluacija zatim prelazi na drugu poziciju.

Povezano: Dinamičko programiranje: primjeri, uobičajeni problemi i rješenja





6 se zatim uspoređuje s 39. Budući da je 6 manje od 39, 6 je umetnuto u prvo mjesto, a 39 u drugo. Novi redoslijed popisa je nakon prvog prolaska:

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





Evaluacija se sada prebacuje na treće mjesto. 2 se uspoređuje s posljednja dva broja i zatim umetne u desni položaj. Novi redoslijed popisa je nakon drugog prolaska:

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

Za treći prolaz redoslijed popisa je:

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

Postupak se ponavlja sve dok se cijeli popis ne sortira.

Pogledajte donji dijagram koji sažima ove operacije:

Analiza algoritama

Vremenska složenost sortiranja umetanja je O (n2), baš kao sortiranje mjehurića . Broj usporedbi u najgorem slučaju je zbroj svih cijelih brojeva od 1 do (n-1), dajući kvadratni zbroj.

Implementacija koda

Python i Java kôd u nastavku prikazuje kako možete implementirati metodu Insertion Sort.

Piton:

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

Bolje kodiranje s pseudokodom

Gore navedeni primjeri koda dati su bez ikakvog pseudokoda na koji se možete pozvati da napišete ovaj algoritam na drugim jezicima. Većina programera (uključujući autora) voli trčati za svojim tipkovnicama nakon što im se 'šapuće' o načinu rada programa.

Ovaj pristup je nažalost sklon pogreškama jer se programska logika komplicira. Kako želite poboljšati svoju programsku igru ​​naučivši koristiti pseudokod?

Udio Udio Cvrkut E -pošta Što je pseudokod i kako vas čini boljim programerom?

Mučite se naučiti programirati? Uhvatite se u koštac s kodom učeći pseudokod. No, što je pseudokod i može li zaista pomoći?

Pročitajte Dalje
Povezane teme
  • Programiranje
  • Java
  • Piton
  • Vodiči za kodiranje
O autoru Jerome Davidson(22 objavljena članka)

Jerome je osobni pisac na MakeUseOfu. On pokriva članke o programiranju i Linuxu. On je također entuzijast za kripto i uvijek prati kripto industriju.

kako ograničiti brzinu preuzimanja pare
Više od Jeromea Davidsona

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu