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

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

Programozás II. előadás

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

Kupac adatszerkezet. 1. ábra.

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

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

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

Számjegyes vagy radix rendezés

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

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

Algoritmusok és adatszerkezetek gyakorlat 07

Számláló rendezés. Példa

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

Algoritmuselmélet 2. előadás

1. ábra. Számláló rendezés

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

Algoritmusok vektorokkal keresések 1

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

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

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

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

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

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

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

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

Programozási alapismeretek 11. előadás

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

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

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

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

15. A VERSENYRENDEZÉS

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

Gyakorló feladatok ZH-ra

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

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

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

Adatszerkezetek I. 4. előadás

Információs Technológia

Önszervező bináris keresőfák

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Egyszerű programozási tételek

Adatszerkezetek és algoritmusok

GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév

Adatszerkezet - műveletek

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

PROGRAMOZÁSI TÉTELEK

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

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

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

17. A 2-3 fák és B-fák. 2-3 fák

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

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

Elemi adatszerkezetek

Felvételi tematika INFORMATIKA

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Informatikai tehetséggondozás:

Adatszerkezetek 2. Dr. Iványi Péter

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

3/1. tétel: Linearis adatszerkezetek és műveleteik

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

7 7, ,22 13,22 13, ,28

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

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

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

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

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

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

Egyszerű programozási tételek

Hierarchikus adatszerkezetek

A valós számok halmaza

Algoritmusok és adatszerkezetek 2.

Fák 3. előadás. (Horváth Gyula anyagai felhasználásával)

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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)

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

Az absztrakt adattípus egy (E,M) párral adható meg, ahol E az értékhalmaz, M a műveletek halmaza. Fő tulajdonságok. Verem

KUPAC TĺPUSÚ ADATSZERKEZETEK

Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések.

Egyszerű programozási tételek

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

Algoritmusok mobidiák könyvtár

Programozás alapjai II. (7. ea) C++

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.

Térinformatikai algoritmusok Elemi algoritmusok

Ö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.

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Fa (Tree): csomópontok (nodes) halmaza, amelyeket élek (edges) kötnek össze, és teljesülnek az alábbi feltételek:

ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA

Átírás:

Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk léteznek o A sorozathoz létezik indexelés művelete - A módszerek összehasonlítási alapja o Tárigény o Idő végrehajtott műveletek száma Egyszerű cserés rendezés Ciklus i -től N- ig Ciklus j i+ től N-ig Ha A[i] > A[j] akkor A[i] A[j] Hely: N+ Hasonlítás: N * (N-) / (Ordo(n )) Mozgatás: 0 *N*(N-) / (Ordo(n )) Minimumkiválasztásos rendezés Ciklus i -től N- ig MIN i Ciklus j i+ től N-ig Ha A[MIN] > A[j] akkor MIN j A[i] A[MIN] Hely: N+ Hasonlítás: N * (N-) / (Ordo(n )) Mozgatás: 0 *N*(N-) ((Ordo(n)) Buborékos Rendezés Ciklus i N-től -ig Ciklus j -től i--ig Ha A[j] > A[j+] akkor A[j] A[j+] Hely: N+ Hasonlítás: N * (N-) / (Ordo(n )) Mozgatás: 0 *N*(N-) / (Ordo(n )) Javított buborékos rendezés i N Ciklus amíg i CS 0 Ciklus j -től i--ig Ha A[j] > A[j+] akkor A[j] A[j+] CS j i CS Hely: N+ Hasonlítás: ((Ordo(n )) Mozgatás: ((Ordo(n ))

Beillesztéses rendezés Ciklus i -től N-ig j i- Ciklus amíg (j 0) és (A[j] > A[j+] A[j] A[j+] j j Hely: N+ Hasonlítás: ((Ordo(n )) Mozgatás: ((Ordo(n )) Javított Beillesztéses rendezés Ciklus i -től N-ig j i Y A[i] Ciklus amíg (j 0) és (A[j] > Y) A[j+] A[j] J j A[j+] Y Hely: N+ Hasonlítás: ((Ordo(n )) Mozgatás: ((Ordo(n )) Shell Rendezés Eljárás Rendezés (N, A, L0) L L0 Ciklus amíg L Ciklus k L+ től *L ig Ciklus i k-tól N-ig L-esével j i L ; y A[i] Ciklus amíg (j > 0) és (A[j] > y ) A[j+L] A[j]; j j L A[j+L] y L Következő_L(L) Lépésszám: Ordo(n*log n) Kupacrendezés Kupac adatszerkezet - Bináris kupac: Egy majdnem teljes bináris fa egy tömbben ábrázolva - A tömb mérete: kupac mérete = N Kupac tulajdonság - A kupac minden i, gyökértől különböző eleme esetén: A[Szülő(i)] A[i] 0 8 Fa-Kupac megfeleltetés: Szülő(i) : i / Bal(i) : * i Jobb(i) : * i + 8 6 Tehát egy olyan bináris fát képvisel, amelyre igaz, hogy minden csúcs bal és jobb oldali részfájában csak kisebb vagy egyenlő értékek találhatók. Ez nem azonos a tanult bináris keresőfa adatszerkezettel!

Kupactulajdonság fenntartása Eljárás Kupacol( A, i, N) b Bal(i); j Jobb(i) Ha b N és A[b] > A[i] akkor MAX b Különben MAX i Ha j N és A[j] > A[MAX] akkor MAX j Ha MAX i akkor A[i] A[legnagyobb] Kupacol (A, MAX, N) Kupac felépítése Eljárás Kupacot-Épít (A) N Tömb_méret(A) Ciklus i N / től -ig Kupacol ( A, i, N) Az A tömböt alulról felfelé haladva kupaccá alakítjuk. Az N/-től N-ig terjedő indexű elemek levelek, tehát egy elemű (kupactulajdonságot teljesítő) fáknak tekinthetőek, így csak a többi csúcsot kell ellenőrizni. A feldolgozás sorrendje garantálja a Kupacol eljárás előfeltételét Kupacrendezés Eljárás Kupacrendezés (A) Kupacot-Épít (A) Ciklus i N-től -ig A[] A[i] N N Kupacol (A,, N) A kupacban a gyökér elem biztosan a legnagyobb. Ötlet: ezt helyezzük a tömb végére, zárjuk ki a kupacból, majd a maradék elemekből építsünk újra kupacot Kupacba beszúrás Eljárás Kupacba-beszúr (A, kulcs) N N + i N Ciklus amíg ( i > ) és (kulcs > A[Szülő(i)]) A[i] A[Szülő(i)] I Szülő(i) A[i] kulcs A kupac kibővítése után beszúró rendezésnél látott módon megkeresi az új kulcs helyét a kupacban. Kupacbaredenzés elemzése - A kupacbarendezés futási ideje: O( n * lg n) - Gyakorlati alkalmazása: elsőbbségi sorok o Műveletek: beszúrás, maximum, kivesz-minimum, kupacba beszúr

Nem-összehasonlító rendezések Szétosztó rendezés Feltételezzük, hogy a kulcsok és N közötti egész számok, és nincs két azonos kulcsú rekord. Eljárás Szétosztó-rendezés (A, B, N) Ciklus i -től N-ig B[A[i].kulcs] A[i] Ha a kulcsok nem fedik le teljesen az..n intervallumot, akkor kezelni kell az üres helyeket az eredményben. Lépésszám: O(n) Leszámláló rendezés Eljárás Leszámláló-rendezés (A, B, N, K) C[] 0 Ciklus i -től N-ig C[A[i].kulcs] C[A[i].kulcs] + Ciklus i -től K-ig C[i] C[i] + C[i-] Ciklus i N-től -ig B[C[A[i].kulcs]] A[i] C[A[i].kulcs] C[A[i].kulcs] Lépésszám: O(n)

Stabil: megtartja az azonos kulcsú elemek sorrendjét! 7 0 0 6 8 0 Kata 7 0 6 8 0

Radix (számjegyes) rendezés Eljárás Radix-rendezés( A, D) Ciklus -től D-ig {Stabil rendezés az i. számjegyen } Paraméterei: - A rendezendő számokat tartalmazó tömb - D számjegyek darabszáma Azonos hosszúságú számok, szövegek, struktúrák esetén használható Lépésszám: O(n) 67 7 67 7 67 7 7 67 Radix rendezés a gyakorlatban - Gyakorlati megvalósítások o Régen lyukkártyák o Számjegyenkénti rendezés o Szövegek rendezése o Dátumok rendezése (év-hó-nap) - Ha nem azonos hosszúságú minden szó, a rövidebbek elejét ki kell egészíteni Edényrendezés Eljárás Edény-rendezés(A, N) Ciklus i -től N-ig Listába_beszúrás( B[f(A[i])], A[i]) Ciklus i -től M-ig Lista_rendezés(B[i]) Ciklus i -től M-ig Lista_összefűzés(C, B[i]) Edényrendezés a gyakorlatban - Akkor alkalmazható hatékonyan, ha a bemenet elemei egy megfelelő hasító függvény segítségével egyenletesen oszthatók el egy..m intervallumon. Ideális esetben M=N - Amennyiben az elosztás egyenletes, az egyes elemekben található láncolt listák elemtartalma kicsi lesz, így azok rendezése gyorsan végrehajtható