Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Hasonló dokumentumok
Közismereti informatika I. 4. előadás

Haladó rendezések. PPT 2007/2008 tavasz.

Tartalom. Programozási alapismeretek. 11. előadás

Programozási alapismeretek 11. előadás

Rendezések. Összehasonlító rendezések

Összetett programozási tételek

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Egyszerű programozási tételek

Programozás II. előadás

Programozási segédlet

Rekurzív algoritmusok

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Egyszerű programozási tételek

PROGRAMOZÁSI TÉTELEK

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Informatikai tehetséggondozás:

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Algoritmuselmélet 2. előadás

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Programozási tételek. Dr. Iványi Péter

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Hatékonyság 1. előadás

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Az összetett programozási tételek is egy tőről fakadnak

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Visszalépéses kiválogatás

Informatikai tehetséggondozás:

Egyszerű programozási tételek

A 2011/2012 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Algoritmusok és adatszerkezetek I. 4. előadás

Adatbázis rendszerek Gy: Algoritmusok C-ben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Felvételi tematika INFORMATIKA

A félév során előkerülő témakörök

Algoritmusok és adatszerkezetek I. 1. előadás

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Objektum Orientált Programozás VII.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

8. gyakorlat Pointerek, dinamikus memóriakezelés

Dinamikus programozás II.

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Gyakorló feladatok ZH-ra

Programozás alapjai. 5. előadás

Programozás alapjai. 8. előadás

A rendezési algoritmusok tanításának céljai és módszerei

Bevezetés a programozásba I.

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Kombinatorikai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)








Programozás I. zárthelyi dolgozat

Algoritmusok, adatszerkezetek, objektumok

A 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Objektumorientált Programozás VI.

Véletlen sorozatok ellenőrzésének módszerei. dolgozat

Objektumorientált Programozás VI.

Kombinatorikai algoritmusok

VÉLETLEN PERMUTÁCIÓ ELŐÁLLÍTÁSA

Informatikai tehetséggondozás:

Adatszerkezetek II. 10. előadás

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Számsorozatok (1) First Prev Next Last Go Back Full Screen Close Quit

Algoritmusok vektorokkal keresések 1

Bevezetés a programozásba I.

Webprogramozás szakkör

A C programozási nyelv III. Pointerek és tömbök.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

A C programozási nyelv III. Pointerek és tömbök.

Eljárások és függvények

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Algoritmusok és adatszerkezetek gyakorlat 07

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Struktúra nélküli adatszerkezetek

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

A PhysioBank adatmegjelenítő szoftvereinek hatékonysága

Programozási tételek. PPT 2007/2008 tavasz.

A C programozási nyelv IV. Deklaráció és definíció

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

REKURZIÓ. Rekurzív: önmagát ismétlő valami (tevékenység, adatszerkezet stb.) Rekurzív függvény: függvény, amely meghívja saját magát.

Átírás:

Rendezések 8. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. október 24. Sergyán (OE NIK) AAO 08 2011. október 24. 1 / 1

Felhasznált irodalom Szlávi Péter, Zsakó László: Módszeres programozás: Programozási tételek (Mikrológia 19). ELTE TTK, 2002 Sergyán (OE NIK) AAO 08 2011. október 24. 2 / 1

Rendezési algoritmusok A rendezési algoritmusok alapfeladata egy N elemű sorozat nagyság szerinti sorba rendezése. Szükséges, hogy a sorozat elemei között értelmezhető legyen a < művelet. A rendezéseket általában helyben az eredeti sorozatban hajtjuk végre, így a rendezetlen sorozatot elveszítjük. 5 3 9 1 7 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 3 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 4 / 1

Egyszerű cserés rendezés Alapötlet Hasonĺıtsuk össze a sorozat első elemét az összes őt követővel. Ha egy elem kisebb mint az első, akkor cseréljük meg őket. Így a sorozat első helyére a megfelelő (azaz legkisebb) elem kerül. Ezt követően ugyanezt tegyük meg a második elemmel, majd az összes következővel. Sergyán (OE NIK) AAO 08 2011. október 24. 5 / 1

Egyszerű cserés rendezés Algoritmus Rendezés(N,X ) Ciklus i := 1-től N 1-ig Ciklus j := i + 1-től N-ig Ha X [i] > X [j] akkor Csere(X [i],x [j]) Elágazás vége Ciklus vége Ciklus vége Eljárás vége Példa i = 1 5 3 9 1 7 3 5 9 1 7 3 5 9 1 7 1 5 9 3 7 1 5 9 3 7 i = 2 1 5 9 3 7 1 5 9 3 7 1 3 9 5 7 1 3 9 5 7 i = 3 1 3 9 5 7 1 3 5 9 7 1 3 5 9 7 i = 4 1 3 5 9 7 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 6 / 1

Csere megvalósítása Két sorozatbeli elem megcseréléséhez szükséges egy plusz elem a sorozaton kívül, melynek típusa azonos a sorozat elemeinek típusával. Algoritmus Csere(X [i],x [j]) TEMP := X [i] X [i] := X [j] X [j] := TEMP Eljárás vége Sergyán (OE NIK) AAO 08 2011. október 24. 7 / 1

Egyszerű cserés rendezés Hatékonyság Helyfoglalás: N + 1 Hasonĺıtások száma: N(N 1) 2 Mozgatások száma: Legalább 0, legfeljebb 3 N(N 1) 2 Sergyán (OE NIK) AAO 08 2011. október 24. 8 / 1

Rendezések összehasonĺıtása 30 elemű sorozatokat hasonĺıtottunk össze A majdnem rendezett sorozatban két elem nem volt a helyén. A fordítva rendezett sorozat csökkenő sorrendben volt rendezett. A véletlen sorozat az első 30 pozitív egész szám egy véletlen permutációja volt. Majdnem rendezett sorozat Fordítva rendezett sorozat Véletlen sorozat Hason. Csere Mozg. Hason. Csere Mozg. Hason. Csere Mozg. Egyszerű cserés 435 29 87 435 435 1305 435 231 693 Sergyán (OE NIK) AAO 08 2011. október 24. 9 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 10 / 1

Minimumkiválasztásos rendezés Alapötlet Az Egyszerű cserés rendezés hibája, hogy általában túl sok cserét hajt végre annak érdekében, hogy az elemek a megfelelő helyre kerüljenek. Ezen javíthatunk, ha az aktuális elemet a mögötte állók minimumával cseréljük fel, ha egyáltalán kell cserélni. Sergyán (OE NIK) AAO 08 2011. október 24. 11 / 1

Minimumkiválasztásos rendezés Algoritmus Rendezés(N,X ) Ciklus i := 1-től N 1-ig MIN := i Ciklus j := i + 1-től N-ig Ha X [MIN] > X [j] akkor MIN := j Elágazás vége Ciklus vége Csere(X [i],x [MIN]) Ciklus vége Eljárás vége Példa i = 1 5 3 9 1 7 i = 2 1 3 9 5 7 i = 3 1 3 9 5 7 i = 4 1 3 5 9 7 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 12 / 1

Minimumkiválasztásos rendezés Hatékonyság Helyfoglalás: N + 1 N(N 1) Hasonĺıtások száma: 2 Mozgatások száma: 3 (N 1) A mozgatások száma akár több is lehet, mint az Egyszerű cserés rendezésnél. Ennek oka, hogy a külső ciklusban mindenképp cserélünk, annak érdekében, hogy ne kelljen mindig egy összehasonĺıtást is elvégezni. Sergyán (OE NIK) AAO 08 2011. október 24. 13 / 1

Rendezések összehasonĺıtása Majdnem rendezett sorozat Fordítva rendezett sorozat Véletlen sorozat Hason. Csere Mozg. Hason. Csere Mozg. Hason. Csere Mozg. Egyszerű cserés 435 29 87 435 435 1305 435 231 693 Minimumkiválasztásos 435 29 87 435 29 87 435 29 87 Sergyán (OE NIK) AAO 08 2011. október 24. 14 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 15 / 1

Buborékos rendezés Alapötlet Összehasonĺıtjuk egymással a szomszédos elemeket, s ha a sorrendjük nem jó, akkor cseréljük meg őket. A szomszédok cseréje miatt először a legnagyobb elem fog a helyére kerülni, majd ezt követően a második legnagyobb, és így tovább. Az algoritmusban az elemek úgy kerülnek a sorozatbeli helyükre a legnagyobbtól kezdve, mint a felfelé szálló buborékok. Sergyán (OE NIK) AAO 08 2011. október 24. 16 / 1

Buborékos rendezés Algoritmus Rendezés(N,X ) Ciklus i := N-től 2-ig 1-esével Ciklus j := 1-től i 1-ig Ha X [j] > X [j + 1] akkor Csere(X [j],x [j + 1]) Elágazás vége Ciklus vége Ciklus vége Eljárás vége Példa i = 5 5 3 9 1 7 3 5 9 1 7 3 5 9 1 7 3 5 1 9 7 3 5 1 7 9 i = 4 3 5 1 7 9 3 5 1 7 9 3 1 5 7 9 3 1 5 7 9 i = 3 3 1 5 7 9 1 3 5 7 9 1 3 5 7 9 i = 2 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 17 / 1

Buborékos rendezés Hatékonyság Helyfoglalás: N + 1 Hasonĺıtások száma: N(N 1) 2 Mozgatások száma: Legalább 0, legfeljebb 3 N(N 1) 2 Sergyán (OE NIK) AAO 08 2011. október 24. 18 / 1

Rendezések összehasonĺıtása Majdnem rendezett sorozat Fordítva rendezett sorozat Véletlen sorozat Hason. Csere Mozg. Hason. Csere Mozg. Hason. Csere Mozg. Egyszerű cserés 435 29 87 435 435 1305 435 231 693 Minimumkiválasztásos 435 29 87 435 29 87 435 29 87 Buborékos 435 29 87 435 435 1305 435 231 693 Sergyán (OE NIK) AAO 08 2011. október 24. 19 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 20 / 1

Javított buborékos rendezés Alapötlet Ha a Buborékos rendezés belső ciklusában egyáltalán nincs már csere, akkor az algoritmust kár folytatni. Ha volt csere, de az utolsó csere például a sorozat közepénél volt, akkor az utolsó csere helyétől a sorozat végéig a sorozat már rendezett, tehát kár azzal a résszel foglalkozni. Sergyán (OE NIK) AAO 08 2011. október 24. 21 / 1

Javított buborékos rendezés Algoritmus Rendezés(N,X ) i := N Ciklus amíg i 2 CS := 0 Ciklus j := 1-től i 1-ig Ha X [j] > X [j + 1] akkor Csere(X [j],x [j + 1]) CS := j Elágazás vége Ciklus vége i := CS Ciklus vége Eljárás vége Példa i = 5 5 3 9 1 7 3 5 9 1 7 3 5 9 1 7 3 5 1 9 7 3 5 1 7 9 i = 4 3 5 1 7 9 3 5 1 7 9 3 1 5 7 9 3 1 5 7 9 i = 2 3 1 5 7 9 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 22 / 1

Javított buborékos rendezés Helyfoglalás: N + 1 N(N 1) Hasonĺıtások száma: Legalább N 1, legfeljebb 2 N(N 1) Mozgatások száma: Legalább 0, legfeljebb 3 2 A Buborékos rendezéshez képest szignifikáns javulás az átlagos végrehajtási időben van. Sergyán (OE NIK) AAO 08 2011. október 24. 23 / 1

Rendezések összehasonĺıtása Majdnem rendezett sorozat Fordítva rendezett sorozat Véletlen sorozat Hason. Csere Mozg. Hason. Csere Mozg. Hason. Csere Mozg. Egyszerű cserés 435 29 87 435 435 1305 435 231 693 Minimumkiválasztásos 435 29 87 435 29 87 435 29 87 Buborékos 435 29 87 435 435 1305 435 231 693 Javított buborékos 254 29 87 435 435 1305 429 231 693 Sergyán (OE NIK) AAO 08 2011. október 24. 24 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 25 / 1

Beillesztéses rendezés Alapötlet Egy elem önmagában rendezett. A második elemet tegyük a helyére. A harmadikat és az összes következőt tegyük a helyére. Sergyán (OE NIK) AAO 08 2011. október 24. 26 / 1

Beillesztéses rendezés Algoritmus Rendezés(N,X ) Ciklus i := 2-től N-ig j := i 1 Ciklus amíg j > 0 és X [j] > X [j + 1] Csere(X [j],x [j + 1]) j := j 1 Ciklus vége Ciklus vége Eljárás vége Példa i = 2 5 3 9 1 7 3 5 9 1 7 i = 3 3 5 9 1 7 i = 4 3 5 9 1 7 3 5 1 9 7 3 1 5 9 7 1 3 5 9 7 i = 5 1 3 5 9 7 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 27 / 1

Beillesztéses rendezés Hatékonyság Helyfoglalás: N + 1 N(N 1) Hasonĺıtások száma: Legalább N 1, legfeljebb 2 N(N 1) Mozgatások száma: Legalább 0, legfeljebb 3 2 Sergyán (OE NIK) AAO 08 2011. október 24. 28 / 1

Rendezések összehasonĺıtása Majdnem rendezett sorozat Fordítva rendezett sorozat Véletlen sorozat Hason. Csere Mozg. Hason. Csere Mozg. Hason. Csere Mozg. Egyszerű cserés 435 29 87 435 435 1305 435 231 693 Minimumkiválasztásos 435 29 87 435 29 87 435 29 87 Buborékos 435 29 87 435 435 1305 435 231 693 Javított buborékos 254 29 87 435 435 1305 429 231 693 Beillesztéses rendezés 58 29 87 435 435 1305 260 231 693 Sergyán (OE NIK) AAO 08 2011. október 24. 29 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 30 / 1

Javított beillesztéses rendezés Alapötlet A Beillesztéses rendezésben túl sok cserét hajtunk végre annak érdekében, hogy egy elem a helyére kerüljön. Hasznosabb lenne, ha a szükséges elemeket hátrább tolnánk eggyel. Sergyán (OE NIK) AAO 08 2011. október 24. 31 / 1

Javított beillesztéses rendezés Algoritmus Rendezés(N,X ) Ciklus i := 2-től N-ig j := i 1 Y := X [i] Ciklus amíg j > 0 és X [j] > Y X [j + 1] := X [j] j := j 1 Ciklus vége X [j + 1] := Y Ciklus vége Eljárás vége Példa i = 2 5 3 9 1 7 5 5 9 1 7 i = 3 3 5 9 1 7 i = 4 3 5 9 1 7 3 5 9 9 7 3 5 5 9 7 3 3 5 9 7 i = 5 1 3 5 9 7 1 3 5 9 9 1 3 5 7 9 Sergyán (OE NIK) AAO 08 2011. október 24. 32 / 1

Javított beillesztéses rendezés Hatékonyság Helyfoglalás: N + 1 N(N 1) Hasonĺıtások száma: Legalább N 1, legfeljebb 2 Mozgatások száma: Legalább 2 (N 1), legfeljebb N(N 1) 2 (N 1) + 2 Sergyán (OE NIK) AAO 08 2011. október 24. 33 / 1

Rendezések összehasonĺıtása Majdnem rendezett sorozat Fordítva rendezett sorozat Véletlen sorozat Hason. Csere Mozg. Hason. Csere Mozg. Hason. Csere Mozg. Egyszerű cserés 435 29 87 435 435 1305 435 231 693 Minimumkiválasztásos 435 29 87 435 29 87 435 29 87 Buborékos 435 29 87 435 435 1305 435 231 693 Javított buborékos 254 29 87 435 435 1305 429 231 693 Beillesztéses rendezés 58 29 87 435 435 1305 260 231 693 Javított beillesztéses 58 87 435 493 260 289 Sergyán (OE NIK) AAO 08 2011. október 24. 34 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 35 / 1

Szétosztó rendezés Alapötlet Feltesszük, hogy a rendezendő sorozat elemei struktúrák, amelyeknek van olyan kulcsmezője, amely 1 és N közötti természetes szám lehet, és nincs két azonos kulcsú elem. A kulcsmező egyértelműen meghatározza azt a helyet, ahova az adott elemnek kerülnie kell. Nincsen szükség hasonĺıtásra. Kell egy másik tömb, ahova az eredmény kerül. Struktúra típus Egy változóban több, akár különböző típusú változót zárhatunk egybe. Például: X.sorszam, X.eloado, X.cim, X.szerzo Sergyán (OE NIK) AAO 08 2011. október 24. 36 / 1

Szétosztó rendezés Algoritmus Rendezés(N,X,Y ) Ciklus i := 1-től N-ig Y [X [i].kulcs] := X [i] Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 08 2011. október 24. 37 / 1

Szétosztó rendezés Hatékonyság Helyfoglalás: 2 N Hasonĺıtások száma: 0 Mozgatások száma: N Kulcsmezőindexelés: N Sergyán (OE NIK) AAO 08 2011. október 24. 38 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 39 / 1

Számlálva szétosztó rendezés Alapötlet A kulcsmező indexe nem csak 1 és N közötti érték lehet, hanem N-nél nagyobb értéket is felvehet. Jelöljük a lehető legnagyobb elemet M-mel. Több elemnek is lehet ugyanolyan értékű a kulcsmezője. Először megszámláljuk, hogy melyik kulcsértékből hány darab van. Másodjára meghatározzuk minden kulcsértékhez a nála nemnagyobb kulcsértékű elemek számát. Harmadjára már minden elemet a helyére helyezhetünk. Sergyán (OE NIK) AAO 08 2011. október 24. 40 / 1

Számlálva szétosztó rendezés Algoritmus Rendezés(N,X,Y ) DB[1..M] := [0,..., 0] Ciklus i := 1-től N-ig DB [X [i].kulcs] := DB [X [i].kulcs] + 1 Ciklus vége Ciklus j := 2-től M-ig DB[j] := DB[j] + DB[j 1] Ciklus vége Ciklus i := 1-től N-ig Y [DB [X [i].kulcs]] := X [i] DB [X [i].kulcs] := DB [X [i].kulcs] 1 Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 08 2011. október 24. 41 / 1

Számlálva szétosztó rendezés Hatékonyság Helyfoglalás: 2 N + M ε, ahol ε egy egész típusú változó memóriabeli mérete. ε jóval kisebb, mint egy összetett típusú tömbelem mérete. Hasonĺıtások száma: 0 Mozgatások száma: N Kulcsmezőindexelés: 5 N Sergyán (OE NIK) AAO 08 2011. október 24. 42 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 43 / 1

Számláló rendezés Alapötlet Számoljuk meg, hogy egy elemnél hány kisebb elem van az egész sorozatban, illetve hány vele egyenlő van az őt megelőző indexűek között. Az így kapott szám meghatározza, hogy melyik elemnek hányadik helyen kell állnia a rendezett sorozatban. Sergyán (OE NIK) AAO 08 2011. október 24. 44 / 1

Számláló rendezés Algoritmus Rendezés(N,X,Y ) DB[1..N] := [1,..., 1] Ciklus i := 1-től N 1-ig Ciklus j := i + 1-től N-ig Ha X [i] > X [j] akkor DB[i] := DB[i] + 1 különben DB[j] := DB[j] + 1 Elágazás vége Ciklus vége Ciklus vége Ciklus i := 1-től N-ig Y [DB[i]] := X [i] Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 08 2011. október 24. 45 / 1

Számláló rendezés Hatékonyság Helyfoglalás: 2 N + N ε N(N 1) Hasonĺıtások száma: 2 Mozgatások száma: N 2-szeres indexelés: N Sergyán (OE NIK) AAO 08 2011. október 24. 46 / 1

Rendezések Sergyán (OE NIK) AAO 08 2011. október 24. 47 / 1

Rendezés Shell módszerrel Alapötlet Hasonĺıtsuk először össze az egymástól távoli elemeket, és ha kell cseréljük meg őket Így az egyes elemek gyorsan közel kerülnek a végleges helyükhöz Sergyán (OE NIK) AAO 08 2011. október 24. 48 / 1

Rendezés Shell módszerrel Algoritmus Rendezés(N,X ) L := L 0 Ciklus amíg L 1 Ciklus K := L + 1-tól 2L-ig Ciklus i := K-től N-ig L-esével j := i L Y := X [i] Ciklus amíg j > 0 és X [j] > Y X [j + L] := X [j] j := j L Ciklus vége X [j + L] := Y Ciklus vége Ciklus vége L :=Következő(L) Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 08 2011. október 24. 49 / 1

Rendezés Shell módszerrel L 0 nem lépheti túl N-t A Következő(L) függvény meghatározására pár példa: 2 k 1 alakú eset Következő(L) Következő:=(L + 1)/2 1 Eljárás vége Fibonacci szám alakú eset Következő(L) L2 := L L1 L := L1 L1 := L2 Következő:=L1 Eljárás vége Sergyán (OE NIK) AAO 08 2011. október 24. 50 / 1