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
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 mikrofoniLisää Jerome Davidsonilta
tilaa uutiskirjeemme
Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e -kirjoja ja ainutlaatuisia tarjouksia!
Klikkaa tästä tilataksesi