shell sort

Az az elképzelés, a módszer csoportokra osztjuk összehasonlítása szekvencia elemek, amelyek egymástól bizonyos távolságra. Kezdetben, a d távolság egyenlő vagy N / 2, ahol n - teljes száma elemek. Az első lépésben, minden egyes csoport magában foglalja a két elem egymástól azonos távolságra, a távolság N / 2; összehasonlítják őket egymással, és ha szükséges, módosítsa helyeken. Az ezt követő lépések történnek a vizsgálati és a csere, de a d távolság csökken d / 2, és a csoportok száma csökken megfelelően. Fokozatosan csökken a távolság a elemek, és d = 1 áthaladnak a tömb történik utoljára.

Ezután, egy példa szekvenciát egész számok, eljárást szemlélteti válogatás tömb Shell által. Egyszerűség kedvéért, az elemek egyik csoport osztják az azonos színű.

shell sort

Az első érték megfelel annak a távolságnak d egyenlő 10/2 = 5. Minden lépésnél, akkor a felére csökken. Tartozó elemek ugyanazon csoporthoz képest, és ha az érték minden elem, álló balra, amelyhez hasonlítják, hosszabb (növekvő sorrend) mivel azok felcserélődnek. Így, intra-permutáció elemek fokozatosan a helyükre, és az utolsó lépés a (d = 1) redukálódik a rendezési áthaladását az azonos csoportba, beleértve az összes N tömbelemek. Ebben az esetben a szükséges számú cserék nagyon alacsony.

programkód C ++:

programkód Pascal:

programot ShellSorting;
használja crt;
típusú massiv = array # 91; 1. 100 # 93; Az egész szám;
var i. j. n. d. számítanak. integer;
A. massiv;
eljárás Shell # 40; A. massiv; n. egész szám # 41; ;
kezdődik
d: = N;
d: = d div 2;
míg # 40; d> 0 # 41; csinál
kezdődik
i: = 1-től n - d do
kezdődik
J: = i;
míg # 40; # 40; j> 0 # 41; és # 40; A # 91; j # 93;> A # 91; j + d # 93; # 41; # 41; csinál
kezdődik
száma: = A # 91; j # 93; ;
A # 91; j # 93; : = A # 91; j + d # 93; ;
A # 91; j + d # 93; : = Count;
j: = j - 1;
végén;
végén;
d: = d div 2;
végén;
writeln;
i: = 1-től n-do levelet # 40; ''. A # 91; én # 93; # 41; ;
végén;

kezdődik
ír # 40; „A méret a tömb>” # 41; ; olvas # 40; n # 41; ;
i: = 1-től n-do
kezdődik write # 40; i. 'Element>' # 41; ; readln # 40; A # 91; én # 93; # 41; ; végén;
ír # 40; „Az így kapott tömb” # 41; ;
héj # 40; A. N # 41; ;
végén.

Shell rendezés olyan hatékony, mint a gyors rendezés, de nyer a válogatás betétekkel. Hasonlítsa össze a sebesség három algoritmusok segítségével lehetséges az alábbi táblázatban.

Kapcsolódó cikkek