Gnome sort ( angl. Gnome sort ) je třídicí algoritmus podobný třídění podle insertů , ale na rozdíl od toho druhého před vložením na správné místo dojde k řadě výměn, jako je tomu u bublinového třídění . Název pochází z domnělého chování zahradních trpaslíků při třídění řady zahradních květináčů.
Třídění trpaslíků je založeno na technice, kterou používá běžný holandský zahradní trpaslík ( holandský tuinkabouter ). To je metoda, kterou zahradní trpaslík třídí řadu květináčů. V podstatě se dívá na současné a předchozí zahradní květináče: pokud jsou ve správném pořadí, postoupí o jeden květináč vpřed, jinak je vymění a ustoupí o jeden květináč dozadu. Okrajové podmínky: pokud neexistuje žádný předchozí bank, postupuje vpřed; pokud není další hrnec, je hotový.
Dick Grun
Algoritmus je koncepčně jednoduchý a nevyžaduje vnořené smyčky. Pracovní doba . V praxi může algoritmus běžet stejně rychle jako vkládání.
Algoritmus najde první místo, kde jsou dva sousední prvky ve špatném pořadí, a prohodí je. Využívá toho, že výměna může vytvořit nový pár ve špatném pořadí těsně před nebo po prohozených prvcích. Neumožňuje seřadit prvky za aktuální pozicí, takže stačí zkontrolovat pozici před přeskupenými prvky.
Níže je pseudokód řazení . Toto je optimalizovaná verze využívající proměnnou j , která umožňuje skočit dopředu tam, kde přestala, než se přesunete doleva, čímž se vyhnete zbytečným iteracím a porovnáváním:
Příklad:
Pokud chceme seřadit pole s prvky [4] [2] [7] [3] od největšího po nejmenší, pak se během iterací cyklu while stane následující:
V důsledku optimalizace gnome se řazení přirozeně transformuje na řazení vložení . Pokaždé, když "gnome" zasáhne nové číslo, všechny hodnoty nalevo od "gnome" jsou již seřazeny.
Algoritmy řazení | |
---|---|
Teorie | Složitost O zápis Objednávkový vztah Seřadit typy udržitelného Vnitřní Externí |
Výměna | |
Výběr | |
vložky | |
fúze | |
Žádné srovnání | |
hybridní | |
jiný | |
nepraktický |