Programozás II. előadás

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

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

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

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

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

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

Hasító táblázatok. Hasító függvények, kulcsütközés kezelése. Programozás II. előadás. Szénási Sándor

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

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

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

Egyszerű programozási tételek

Optimalizációs stratégiák 2.

Visszalépéses keresés

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

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

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

Összetett programozási tételek

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

Optimalizációs stratégiák 1.

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

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

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

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

Számjegyes vagy radix rendezés

Informatikai tehetséggondozás:

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

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

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

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

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

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

Tuesday, March 6, 12. Hasító táblázatok

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

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

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.

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

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

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

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

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

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

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

Adatszerkezetek 2. Dr. Iványi Péter

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.

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

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

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

PROGRAMOZÁSI TÉTELEK

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

Gráfok. Programozás II. előadás. Szénási Sándor.

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

XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus. A véletlen nyomában

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Önszervező bináris keresőfák

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

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

ELEMI PROGRAMOZÁSI TÉTELEK

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

Adatszerkezet - műveletek

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

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

A 2013/2014 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

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

Informatikus informatikus Térinformatikus Informatikus T 1/9

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

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

Rekurzív algoritmusok

Gyakorló feladatok ZH-ra

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

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

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

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

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

1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor

Programozási technológia

Számítógép hálózatok, osztott rendszerek 2009

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Algoritmuselmélet 2. előadás

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Algoritmusok, adatszerkezetek, objektumok

Programozási segédlet

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

Bevezetés a programozásba





Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

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.

Adatszerkezetek I. 4. előadás

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

Objektum Orientált Programozás VII.

Multihalmaz, intervallumhalmaz

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

Matematika tanmenet 2. osztály részére

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

Függvények növekedési korlátainak jellemzése

Átírás:

Nem összehasonlító rendezések Nem összehasonlító rendezések Programozás II. előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar

Programozás II. 2 Rendezés fogalma Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése Feltételezzük: A sorozat elemei olyanok, amelyekre a <, relációk léteznek. A sorozathoz létezik indexelés művelet A módszerek összehasonlításának alapja: tárigény idő (végrehajtott műveletek száma) bonyolultság Általunk tárgyalt típusok összehasonlító rendezések (a rendezéshez csak a bemeneti tömb elemein történő összehasonlítást használják) nem összehasonlító rendezések (a rendezéshez egyéb információkra is szükségük van)

Leszámláló rendezés Radix rendezés Edényrendezés Haladó rendezések

Programozás II. Szétosztó rendezés Feltételezzük, hogy N darab elemünk van, a kulcsok 1 é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 1-től N-ig B[A[i].kulcs] A[i] ciklus vége eljárás vége Lépésszám: O(N) Ha a kulcsok nem fedik le teljesen az 1.. N intervallumot, akkor kezelni kell az üres helyeket az eredményben

Programozás II. 5 Leszámláló rendezés Feltételezzük, hogy N darab elemünk van, a kulcsok 1 és K közötti egész számok, és lehetnek köztük azonos kulcsú elemek eljárás Leszámláló-rendezés(A, címsz. B, N, K) C[] 0 ciklus i 1-től N-ig C[A[i].kulcs] C[A[i].kulcs] + 1 ciklus vége ciklus i 2-től K-ig C[i] C[i] + C[i-1] ciklus vége ciklus i N-től 1-ig B[C[A[i].kulcs]] A[i] C[A[i].kulcs] C[A[i].kulcs] 1 ciklus vége eljárás vége Lépésszám: O(N) Még pontosabban: N+K+N darab lépés. Nagyméretű K esetében ez problémákat okozhat

Leszámláló rendezés - bemenet Programozás II. 6 A 2 Peti 3 Kati 1 Feri Mari 1 Mici 5 Laci 1 Móni 1 Pali Béni 5 Sanyi 2 Tóni 3 Teri C B

Leszámláló rendezés 1. lépés Programozás II. 7 A 2 Peti 3 Kati 1 Feri Mari 1 Mici 5 Laci 1 Móni 1 Pali Béni 5 Sanyi 2 Tóni 3 Teri C 2 2 2 2 B

Leszámláló rendezés 2. lépés Programozás II. 8 A 2 Peti 3 Kati 1 Feri Mari 1 Mici 5 Laci 1 Móni 1 Pali Béni 5 Sanyi 2 Tóni 3 Teri C 6 8 10 12 B

Leszámláló rendezés 3. lépés Programozás II. 9 A 2 Peti 3 Kati 1 Feri Mari 1 Mici 5 Laci 1 Móni 1 Pali Béni 5 Sanyi 2 Tóni 3 Teri C 6 7 10 12 B 3 Teri

Leszámláló rendezés 3-2. lépés Programozás II. 10 A 2 Peti 3 Kati 1 Feri Mari 1 Mici 5 Laci 1 Móni 1 Pali Béni 5 Sanyi 2 Tóni 3 Teri C 5 7 10 12 B 2 Tóni 3 Teri

Leszámláló rendezés 3-N. lépés Programozás II. 11 A 2 Peti 3 Kati 1 Feri Mari 1 Mici 5 Laci 1 Móni 1 Pali Béni 5 Sanyi 2 Tóni 3 Teri C 0 6 8 10 B 1 Feri 1 Mici 1 1 Móni Pali 2 Peti 2 Tóni 3 Kati 3 Teri Mari Béna 5 Laci 5 Sanyi Stabil rendezés: megtartja az azonos kulcsú elemek sorrendjét!

Leszámláló rendezés Radix rendezés Edényrendezés Haladó rendezések

Programozás II. 13 Radix (számjegyes) rendezés Radix rendezés algoritmusa eljárás Radix-rendezés(címsz. A, D) ciklus i 1-től D-ig {Stabil rendezés az i. számjegyen } ciklus vége eljárás vége 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ó Jelentősen lehet vele növelni a szétosztó rendezés hatékonyságát, ha a rendezendő elemek felbonthatók számjegyek -re Lépésszám: O(n)

Radix rendezés menete Programozás II. 1 Eredeti 1. lépés 2. lépés 3. lépés 12 657 52 211 57 55 15 551 151 15 13 382 211 551 151 12 52 382 55 15 15 13 657 57 211 12 13 52 551 151 55 15 15 657 57 382 13 151 15 15 211 382 12 57 52 551 55 657

Programozás II. 15 Radix rendezés a gyakorlatban Gyakorlati megvalósítások: Régen lyukkártyák Számjegyenkénti rendezés Szövegek rendezése 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!

Leszámláló rendezés Radix rendezés Edényrendezés Haladó rendezések

Programozás II. 17 Edényrendezés Edényrendezés algoritmusa eljárás Edény-rendezés(címsz. A, N) C[] ciklus i 1-től N-ig Listába_beszúrás(B[f(A[i])], A[i]) ciklus vége ciklus i 1-től M ig Lista_rendezés(B[i]) ciklus vége ciklus i 1-től M ig Lista_összefűzés(A, B[i]) ciklus vége eljárás vége

Programozás II. 18 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 1..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ó Ez a sebesség növekedés ellensúlyozza a szétszórás és összefűzés által okozott többlet munkát

Programozás II. 19 Irodalomjegyzék Javasolt/felhasznált irodalom Cormen, Leiserson, Rivest: Algoritmusok, Műszaki Könyvkiadó, 1997 Pap, Szlávi, Zsakó: μlógia3 Módszeres programozás, ELTE TTK, 2002 Knuth: A számítógép programozás művészete 3., Műszaki Könyvkiadó, 1988