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
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 dokumentiVeč 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