Uvod v algoritem razvrščanja pri vstavljanju

Uvod v algoritem razvrščanja pri vstavljanju

Razvrščanje pri vstavljanju je tehnika, ki deluje z uporabo razvrščenega podvpisa in mu nenehno dodaja vrednost z nerazvrščenega seznama, dokler ni razvrščen celoten seznam.





Algoritem se začne s prvo postavko seznama kot razvrščenim podseznamom. Nato primerja naslednjo številko s prvo. Če je večji, se vstavi v prvi indeks. V nasprotnem primeru ostane v indeksu.





Tretja vrednost se nato primerja z drugimi dvema in se nato vstavi v pravilen indeks. Ta postopek se nadaljuje, dokler ne razvrstite celotnega seznama.





Natančnejši pogled na Razvrstitev vstavljanja

Zgornji opis vam morda ni bil smiseln. Primer bi vam moral pomagati bolje razumeti.

Recimo, da imate seznam: [39, 6, 2, 51, 30, 42, 7].



Algoritem identificira 39 kot prvo vrednost razvrščenega podvpisa. Ocenjevanje se nato premakne na drugo mesto.

Sorodno: Dinamično programiranje: primeri, pogoste težave in rešitve





6 se nato primerja s 39. Ker je 6 manjše od 39, se 6 vstavi v prvo mesto, 39 pa v drugo. Novo zaporedje seznamov je po prvem prehodu:

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





Ocenjevanje se zdaj premakne na tretje mesto. 2 se primerja z zadnjima dvema številkama in se nato vstavi v pravi položaj. Novo zaporedje seznamov je po drugem prehodu:

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

Za tretji prehod je vrstni red seznama:

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

Postopek se ponavlja, dokler ni razvrščen celoten seznam.

Oglejte si spodnji diagram, ki povzema te operacije:

Algoritemska analiza

Časovna zapletenost razvrščanja vstavljanja je O (n2), tako kot razvrščanje mehurčkov . Število primerjav v najslabšem primeru je vsota vseh celih števil od 1 do (n-1), ki daje kvadratno vsoto.

Izvajanje kodeksa

Spodnja koda Python in Java prikazuje, kako lahko uporabite metodo razvrščanja vstavljanja.

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

Boljše kodiranje s psevdokodo

Zgornji primeri kode so bili podani brez psevdokode, na katero se lahko sklicujete, da ta algoritem napišete v drugih jezikih. Večina programerjev (vključno z avtorjem) radi pobegnejo na tipkovnice, potem ko so jim 'šepetali' o tem, kako program deluje.

Ta pristop je žal nagnjen k napakam, saj se programska logika zaplete. Kako bi radi izboljšali svojo igro programiranja tako, da se naučite uporabljati psevdokodo?

Deliti Deliti Cvrkutati E-naslov Kaj je psevdokod in kako vas naredi boljšega razvijalca?

Se borite za učenje programiranja? S kodo se lotite tako, da se naučite psevdokode. Kaj pa je psevdokoda in ali lahko resnično pomaga?

Preberite Naprej
Sorodne teme
  • Programiranje
  • Java
  • Python
  • Kodiranje vadnic
O avtorju Jerome Davidson(22 objavljenih člankov)

Jerome je osebni pisatelj pri MakeUseOf. Zajema članke o programiranju in Linuxu. Je tudi navdušenec nad kriptovalutami in vedno spremlja kripto industrijo.

kje so shranjeni vsi vaši dokumenti
Več od Jeroma Davidsona

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite