Johdanto lisäyslajittelualgoritmiin

Johdanto lisäyslajittelualgoritmiin

Lisäyslajittelu on tekniikka, joka toimii käyttämällä lajiteltua alaluetteloa ja lisäämällä siihen jatkuvasti arvoa lajittelemattomasta luettelosta, kunnes koko luettelo on lajiteltu.





Algoritmi alkaa ensimmäisestä luettelokohteesta lajiteltuna alaluettelona. Sitten se vertaa seuraavaa numeroa ensimmäiseen. Jos se on suurempi, se lisätään ensimmäiseen hakemistoon. Muuten se jätetään hakemistoon.





Kolmatta arvoa verrataan sitten kahteen muuhun ja lisätään sitten oikeaan indeksiin. Tämä prosessi jatkuu, kunnes koko lista on lajiteltu.





Lähempi tarkastelu lisäyslajittelusta

Yllä oleva kuvaus ei ehkä ole järkevä sinulle. Esimerkin pitäisi auttaa sinua ymmärtämään paremmin.

Oletetaan, että sinulla on luettelo: [39, 6, 2, 51, 30, 42, 7].



Algoritmi tunnistaa 39 lajitellun alaluettelon ensimmäiseksi arvoksi. Arviointi siirtyy sitten toiselle sijalle.

Aiheeseen liittyviä: Dynaaminen ohjelmointi: esimerkkejä, yleisiä ongelmia ja ratkaisuja





Kuvaa 6 verrataan sitten arvoon 39. Koska 6 on alle 39, 6 lisätään ensimmäiseen asemaan ja 39 toiseen. Uusi luettelojärjestys on ensimmäisen passin jälkeen:

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





Arviointi siirtyy nyt kolmanneksi. Kuviota 2 verrataan kahteen viimeiseen numeroon ja lisätään sitten oikeaan kohtaan. Uusi luettelojärjestys on toisen kierroksen jälkeen:

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

Kolmannen vaiheen luettelojärjestys on seuraava:

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

Prosessi toistuu, kunnes koko lista on lajiteltu.

Katso alla oleva kaavio, joka tiivistää nämä toiminnot:

Algoritmin analyysi

Lisäyslajittelun aika monimutkaisuus on O (n2), ihan kuin kupla lajitella . Vertailujen määrä pahimmassa tapauksessa on kaikkien kokonaislukujen summa 1: stä (n-1), jolloin saadaan toisen asteen summa.

Koodin käyttöönotto

Alla olevat Python- ja Java -koodit osoittavat, kuinka voit ottaa käyttöön lisäyslajittelumenetelmän.

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

Parempi koodaus pseudokoodilla

Yllä olevat koodiesimerkit annettiin ilman pseudokoodia, johon voit viitata tämän algoritmin kirjoittamiseksi muille kielille. Useimmat ohjelmoijat (mukaan lukien tekijä) haluavat juosta näppäimistöilleen sen jälkeen, kun heille on 'kuiskailtu' ohjelman toiminnasta.

Tämä lähestymistapa on valitettavasti altis virheille, kun ohjelman logiikka monimutkaistuu. Kuinka haluat tasoittaa ohjelmointipelisi oppimalla käyttämään pseudokoodia?

Jaa Jaa Tweet Sähköposti Mikä on pseudokoodi ja miten se tekee sinusta paremman kehittäjän?

Onko sinulla vaikeuksia oppia ohjelmointia? Pääset käsiksi koodiin oppimalla pseudokoodin. Mutta mikä on pseudokoodi ja voiko se todella auttaa?

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Java
  • Python
  • Koodausoppaat
Kirjailijasta Jerome Davidson(22 artikkelia julkaistu)

Jerome on MakeUseOfin henkilöstökirjoittaja. Hän käsittelee ohjelmointia ja Linuxia käsitteleviä artikkeleita. Hän on myös krypto -harrastaja ja seuraa aina salausteollisuutta.

missä on MacBook Pron mikrofoni
Lisää Jerome Davidsonilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi