Gnome sort ( eng. Gnome sort ) on lajittelualgoritmi, joka muistuttaa lajittelua lisäysten mukaan , mutta toisin kuin jälkimmäinen, ennen oikeaan paikkaan lisäämistä tapahtuu sarja vaihtoja, kuten kuplalajittelussa . Nimi tulee puutarhatontujen oletetusta käytöksestä lajitellessaan puutarharuukkuja.
Kääpiöiden lajittelu perustuu yleisen hollantilaisen puutarhatontun ( hollantilainen tuinkabouter ) käyttämään tekniikkaan. Tämä on menetelmä, jolla puutarhatonttu lajittelee kukkaruukkuja. Pohjimmiltaan se tarkastelee nykyistä ja edellistä puutarharuukkua: jos ne ovat oikeassa järjestyksessä, se astuu yhden ruukun eteenpäin, muuten se vaihtaa ne ja astuu yhden ruukun taaksepäin. Rajaehdot: jos edellistä pottia ei ole, se astuu eteenpäin; jos seuraavaa pottia ei ole, hän on valmis.
Dick Grun
Algoritmi on käsitteellisesti yksinkertainen eikä vaadi sisäkkäisiä silmukoita. Työaika . Käytännössä algoritmi voi toimia yhtä nopeasti kuin lisäyslajittelu.
Algoritmi löytää ensimmäisen paikan, jossa kaksi vierekkäistä elementtiä ovat väärässä järjestyksessä, ja vaihtaa ne. Hän käyttää hyväkseen sitä, että vaihto voi tuottaa uuden parin väärässä järjestyksessä juuri ennen tai jälkeen vaihdettuja elementtejä. Se ei salli nykyisen sijainnin jälkeisten elementtien lajittelua, joten täytyy vain tarkistaa sijainti ennen uudelleen järjestettyjä elementtejä.
Alla on lajittelun pseudokoodi . Tämä on optimoitu versio, joka käyttää j -muuttujaa , jotta voit siirtyä eteenpäin siihen, mihin se jäi ennen vasemmalle siirtymistä, välttäen turhat iteraatiot ja vertailut:
Esimerkki:
Jos haluamme lajitella taulukon, jossa on elementtejä [4] [2] [7] [3], suurimmasta pienimpään, while-silmukan iteraatioiden aikana tapahtuu seuraavaa:
Gnome-optimoinnin seurauksena lajittelu muuttuu luonnollisesti lisäyslajitteluksi . Joka kerta kun "gnome" osuu uuteen numeroon, kaikki "gnome" -kohdan vasemmalla puolella olevat arvot on jo lajiteltu.
Lajittelualgoritmit | |
---|---|
Teoria | Monimutkaisuus O merkintä Tilaussuhde Lajittele tyypit kestävää Sisäinen Ulkoinen |
Vaihto | |
Valinta | |
insertit | |
fuusio | |
Ei vertailuja | |
hybridi | |
Muut | |
epäkäytännöllistä |