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

Hasonló dokumentumok
Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

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

Algoritmuselmélet 2. előadá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

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

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

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

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

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

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

Programozás alapjai GEIAL 312BL. Wagner György Általános Informatikai Tanszék. Programozás alapjai (C)

Adatszerkezetek 1. előadás

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

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

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

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

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

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

10. előadás Speciális többágú fák

Algoritmuselmélet 1. előadás

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Adatbázis rendszerek Gy: Algoritmusok C-ben

Algoritmusok vektorokkal keresések 1

Egyszerű programozási tételek

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.

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

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

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

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

Láncolt listák Témakörök. Lista alapfogalmak

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Algoritmusok és adatszerkezetek gyakorlat 07

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

Informatikai tehetséggondozás:

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

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

Algoritmusok bonyolultsága

Programozási alapismeretek 11. előadás

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

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

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

Algoritmizálás, adatmodellezés tanítása 7. előadás

1. fogalom. Add meg az összeadásban szereplő számok elnevezéseit! Milyen tulajdonságai vannak az összeadásnak? Hogyan ellenőrizzük az összeadást?

Adatszerkezetek és algoritmusok

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

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

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

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

Lekérdezések feldolgozása és optimalizálása

Gyakorló feladatok ZH-ra

Adatbáziskezelés. Indexek, normalizálás NZS 1

Egyirányban láncolt lista

Programozási módszertan. Mohó algoritmusok

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

Programozás alapjai GEIAL316G, GEIAL312B-BP

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

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

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

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

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

Problémaosztályok, algoritmusok. Rendezés, keresés

Legkönnyebb és legnehezebb Rendezési algoritmusok

22. GRÁFOK ÁBRÁZOLÁSA

A számítástudomány alapjai

PROGRAMOZÁSI TÉTELEK

Számjegyes vagy radix rendezés

15. A VERSENYRENDEZÉS

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

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

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

Algoritmusok és adatszerkezetek 2.

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

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Programozási segédlet

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

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

Programozás II. előadás

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

Algoritmuselmélet 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. Egyszerű programozási tételek. Sergyán Szabolcs

Táblázatok fontosabb műveletei 1

Kupac adatszerkezet. 1. ábra.

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

Táblázatkezelés Excel XP-vel. Tanmenet

értékel függvény: rátermettségi függvény (tness function)

10. Szimultán kiválasztások

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.

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Leszámláló rendezés. 1. Végigmegyünk az A-n, és ha egy elem értéke i, akkor megnöveljük C[i] értékét eggyel.

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

INFORMATIKAI ALAPISMERETEK

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Számítógépes döntéstámogatás. Genetikus algoritmusok

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

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Átírás:

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

Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb, akkor a neki megfelelő rekord sorszám a rendezés után a 28 lesz.) A kulcsokat minden lehetséges párosításban össze kell hasonlítani, és megszámolni, hogy az éppen vizsgált kulcsnál hány kisebb van. Variációk: 1. Hasonlítsuk össze K j -t K i -vel 1 j N esetén, ha 1 i N. De! Felesleges minden számot önmagával is összehasonlítani K a -t K b -vel, majd utána K b -t K a -val összehasonlítani 2. Hasonlítsuk össze K j -t K i -vel 1 j i esetén, ha 1 i N Fontos! Az algoritmus nem jár együtt a rekordok mozgatásával, inkább a címtáblázat-rendezéshez hasonlít. Futási ideje: 13 N + 6 A + 5 B - 4, ahol: N = a rekordok száma, A = N, B = 2 az olyan indexpárok száma, amelyekre j < i, és K j > K i

Beszúró rendezés (1) ( Bridzsező módszer ) Feltétel: Az R j rekord vizsgálata előtt a megelőző R 1,, R j-1 rekordok már rendezettek. Ekkor az R j rekordot beszúrjuk az előzőleg már rendezett rekordok közé. Változatok: Közvetlen beszúrás, v. szitáló technika: Tegyük fel, hogy 1 < j N, és hogy R 1,, R j rekordok rendezettek úgy, hogy K 1 K 2 K j-1. Ekkor a K j kulcsot összehasonlítjuk a K j-1, majd a K j-2 kulcsokkal mindaddig, míg R j be nem szúrható R i és R i+1 közé. Bináris beszúrás: Nem sorosan, hanem binárisan kell megkeresni az R j rekord helyét a már rendezett rekordok között. (N > 128 esetén már (!) nem javasolt) Előnye: kevesebb összehasonlítás Hátránya: megtalált hely esetén továbbra is nagy mennyiségű rekordot kell megmozgatni a beszúráshoz.

Kétirányú beszúrás: Beszúró rendezés (2) Bináris kereséssel a hely megkeresése, majd beszúrásnál abba az irányba mozgatjuk a már rendezett rekordokat, amerre kevesebbet kell mozgatni. (Jellemzője a nagyobb memória igény!). SHELL (v. fogyó növekményes) rendezés: Eddig a rekordok rendezéskor rövid lépésekkel kerültek helyükre. Most: rövid lépések helyett hosszú ugrások legyenek. Megalkotója: Donald L. Shell. (1959. július). Elve: A rekordokat először (pl.) kettesével csoportokba osztjuk. Ezeket a rekord csoportokat rendezzük (a két elem vagy jó sorrendben követi egymást, vagy felcseréljük őket). Ezután négyesével képezzük a csoportokat és rendezzük, majd újabb csoportokat képzünk, rendezzük,, míg a végén már csak egy csoport lesz, a teljes rekordhalmaz. Addigra az már rendezett részhalmazokból áll.

Beszúró rendezés (3) Shell rendezés folyt: minden közbenső fázisra igaz, hogy vagy viszonylag kicsi a csoport, vagy viszonylag jól rendezett, ezért a rekordok gyorsan mozognak végső helyük felé. Hatékonysága nagy mértékben függ az alkalmazott növekmények sorozatától. Erre táblázatban találhatók meg a javasolt növekménysorozatok. Ha ez nincs kéznél, akkor: n 1 =1,, n s+1 = 3 n s + 1 n s+2 >N és akkor legyen vége, ha:

Lista beszúró rendezése (A közvetlen beszúrás javítása.) Az alapalgoritmus 2 alapvető műveletet alkalmaz: - rendezett file átnézése adott kulcsnál kisebb vagy egyenlő kulcs megtalálása céljából. - új rekord beszúrása a rendezett file meghatározott helyére Kérdés: melyik az az adatszerkezet, amely erre a legalkalmasabb? A file egy lineáris lista, amelyet ez az algoritmus szekvenciálisan kezel, ezért minden beszúrási művelethez átlagosan a rekordok felét kell megmozgatni. Beszúráshoz az ideális adatszerkezet a láncolt lista, mivel csak néhány címet kell átírni a beszúráshoz. Ehhez elegendő az egyirányú láncolt lineáris lista. Várható futási ideje: 7B+14N-3A-6 időegység, ahol N = a rekordok száma A = a jobbról-balra maximumok száma, B = az eredeti permutációban levő inverziók száma (kb. 1/4 N 2 )

Címszámító rendezés Elve: könyvek vannak a padlón. Ezeket kell abc sorrendben egy polcra helyezni. Meg kell becsülni a könyv végső helyét. Ezzel lecsökkenthető az elvégzendő összehasonlítások száma, valamint a rekord beszúrásához szükséges mozgatások száma. Hátránya: általában N-nel arányos további tárterületet igényel azért, hogy a szükséges mozgatások száma lecsökkenjen.

Cserélő rendezések Buborék rendezés: Elve: hasonlítsuk össze K 1,K 2 kulcsokat. Helytelen sorrend esetén cseréljük fel R 1, R 2 rekordokat, aztán ugyanezt hajtsuk végre R 2, R 3, majd R 3, R 4, majd R 4, R 5, rekordokkal. Az eljárás az R N, R N-1, R N-2,... rekordokat juttatja a megfelelő helyre. Függőleges ábrázolás esetén látható, hogy a nagy számok fognak először felbuborékolni a helyükre. Más neve: cserélve kiválasztás v. terjesztés. Futási ideje: 8A + 7B + 8C +1, ahol A = a menetek száma, B = a cserék száma, C = az összehasonlítások száma Max értéke: 7.5 N 2 + 0.5 N + 1 (N 2 -tel arányos idő )

A buborék rendezés algoritmusa (Nem azért mert jó, hanem mert elterjedt ) Lépések: 1. Legyen korlát = N (korlát a legnagyobb index, amelyhez tartozó rekordról nem tudjuk, végső helyén van-e. 2. t = 0. Végezzük el a 3. lépést a j = 1, 2,, korlát-1 értékekre, aztán menjünk a 4. lépésre. (Ha korlát = 1, akkor közvetlenül a 4. lépésre) 3. R j és R j+1 összehasonlítása. Ha K j > K j+1, akkor cseréljük fel R j -t R j+1 -gyel, és legyen t = j. (Ez jelzi, hogy volt csere ) 4. Történt-e csere? Ha t = 0, akkor nem, és az algoritmusnak így vége. Egyébként korlát = t, és visszatérni a 2. lépésre. (A közvetlen beszúrással összehasonlítva, kétszer lassúbb!!)

Batcher párhuzamos módszere (Leginkább a Shell-rendezéshez hasonlítható.) Elve: összehasonlításra ne szomszédos párokat válasszunk ki, hanem általánosan felírva: K i+1 -et K i+d+1 -gyel, ahol d meghatározására van(!) algoritmus.

Kiválasztó rendezés Elve: 1. Keressük meg a legkisebb kulcsot. A neki megfelelő rekordot tegyük a kimenő területre, majd helyettesítsük kulcsát végtelennel. 2. Ismételjük meg az 1. lépést. Ekkor a 2. legkisebb kulcsot találjuk meg, mivel az elsőt végtelennel helyettesítettük. 3. Az 1. lépést ismételni mindaddig, míg az összes N rekord kiválasztásra nem került. Feltétel: a rendezés megkezdése előtt minden elem jelen legyen. Hátránya: - a végső sorozatot egyesével generálja - minden egyes elem kiválasztásához N-1 összehasonlítást végez el. - külön output területet igényel.

Nem vesszük (sajnos...) gyorsrendezés (Quicksort) kupacrendezés legnagyobb be, első ki összefésülés szétosztó rendezés (De aki gondolja, utánanézhet) Házi feladat: Tessék megpróbálni megkeresni a cserélve történő kiválasztás helyét a tanult rendezési alapelvek között! (vajon cserélő, vagy kiválasztó-e?)