Információs Technológia

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Információs Technológia"

Átírás

1 Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék november 18.

2 Rekurzió Rekurzió Rekurzió "Ismételni emberi dolog. Rekurziót írni isteni..." (L. Peter Deutsch) Fodor A. (Pannon Egyetem) Információs technológia november / 41

3 Rekurzió Rekurzió Rekurzió A feladat algoritmusa eleve rekurzív formában adott Például: n! 4! = 1 * 2 * 3 * 4 3! = 1 * 2 * 3 2! = 1 * 2 1! = 1 A valójában nem rekurzív de egyszerűbb a rekurzió használata Például: sorrend fordítás Megoldás menete: Megkeressük azt a legegyszerűbb esetet amiben a megoldás triviális Megkeressük, hogy hogyan vezethető vissza ismételt egyszerűsítésekkel a legegyszerűbb esetre a probléma Fodor A. (Pannon Egyetem) Információs technológia november / 41

4 Rekurzió Rekurzió fajtái, osztályozása Rekurzió Meghívás módja alapján közvetlen (a függvény hívja a függvényt) közvetett (a függvény hívja b függvényt és b függvény hívja a függvényt) Meghívás módja és helye alapján (Hányszor, hány helyen hívja meg önmagát) Egyszerű Többszörös Fodor A. (Pannon Egyetem) Információs technológia november / 41

5 Faktoriális (n!) Rekurzió Faktoriális Rekurzívan adott az algoritmus. Kiszámítás menete (példa): n! = 1 * 2 * 3 * 4 *... * n. 4! = 1 * 2 * 3 * 4 3! = 1 * 2 * 3 2! = 1 * 2 1! = 1 Kiszámítása: n! = n * (n-1)! ha n>1 1! = 1 long fakt(int n) if (n > 1) return n*fakt(n-1); return 1; Fodor A. (Pannon Egyetem) Információs technológia november / 41

6 Faktoriális (n!) Rekurzió Faktoriális long fakt(int n) if (n > 1) return n*fakt(n-1); return 1; Kiszámítás lépései: fakt(4) return 4 * fakt(3) return 3 * fakt(2) return 2 * fakt(1) return 1 return 2 * fakt(1) 2*1 2 return 3 * fakt(2) 3*2 6 return 4 * fakt(3) 4*6 24 Fodor A. (Pannon Egyetem) Információs technológia november / 41

7 Szám bináris kiírása Rekurzió Szám bináris kiírása Kiszámítás módja: Elosztjuk 2-vel a számot, akkor a maradék az utolsó számjegy Probléma: Ezt a bitet kellene utoljára kiírni!!! Probléma megoldása: A biteket egy tömbben kell eltárolni... Megoldás: A rekurzív hívás után írunk ki (a rekurzív hívások során tárolódnak a már kiszámított számjegyek) void binkiir(int n) int e, m; m = n % 2; if (e = n / 2) binkiir(e); printf("%d", m); Fodor A. (Pannon Egyetem) Információs technológia november / 41

8 Szám bináris kiírása Rekurzió Szám bináris kiírása void binkiir(int n) int e, m; m = n % 2; if (e = n / 2) binkiir(e); printf("%d", m); Kiszámítás lépései: (5 = Binárisan: 101) binkiir(5) m:1 e:2 binkiir(2) m:0 e:1 binkiir(1) m:1 e:0 printf("%d", 1); 1 printf("%d", 0); 0 printf("%d", 1); 1 Fodor A. (Pannon Egyetem) Információs technológia november / 41

9 Hanoi tornyai legendája Rekurzió Hanoi tornyai A legenda: Sok ezer évvel ezelőtt Indiában, Fo Hi uralkodása alatt, a benaresi Siva-templom közepén volt egy márványtábla, amelyből három gyémánttű állt ki. Az első tűn 64 vékony aranykorong helyezkedett el, alul a legnagyobb átmérőjű, majd rajta egyre kisebbek. Egyszer Siva isten megparancsolta a templom papjainak, hogy rakják át a korongokat az első tűről a másodikra. Két fontos szabályt azonban be kellett tartaniuk: A korongok igen sérülékenyek, ezért egyszerre csak egyet lehet mozgatni, nem kerülhet a szent korongokból magasabb értékű alacsonyabb értékű fölé A szerzetesek természetesen használhatták a harmadik tűt is a rakodás közben. Amikor az utolsó korong a helyére kerül, a templom porrá omlik össze, és a világ véget ér. Fodor A. (Pannon Egyetem) Információs technológia november / 41

10 Hanoi tornyai Rekurzió Hanoi tornyai Megoldás lépései 3 korong esetén Hét áthelyezést adja a leggyorsabb megoldást 3 korong esetén Demo: Fodor A. (Pannon Egyetem) Információs technológia november / 41

11 Hanoi tornyai Rekurzió Hanoi tornyai Felírható a következő képlet: L=L +1+L, ahol L a lépések száma K-1 korong esetén. Az összeadás három tagja a megoldás három lépését jelöli: (1) K-1 korong az első tűről a harmadikra (L lépés) (2) Legnagyobb korong a helyére rekása (1 lépés) (3) a K-1 korong vissza a másodikra (L lépés) Lépések száma: L = 2 K 1 (K: korongok száma) A szerzeteseknek tehát áthelyezést kell végrehajtaniuk. Ha feltesszük, hogy egy korongot átlagosan egy másodperc alatt tesznek át akkor több mint évig tartana! Fodor A. (Pannon Egyetem) Információs technológia november / 41

12 Rekurzió Hanoi tornyai Hanoi tornyai lépéseit kiszámoló függvény Függvény kódja: void Hanoi_tornyai(int korong, char honnan, char hova, char seged) if (korong > 0) Hanoi_tornyai(korong-1, honnan, seged, hova); printf("%d. korong %c --> %c\n", korong, honnan, hova); Hanoi_tornyai(korong-1, seged, hova, honnan); Meghívása:... Hanoi_tornyai(3, A, B, T ); Hanoi_tornyai(4, A, B, T );... Fodor A. (Pannon Egyetem) Információs technológia november / 41

13 Rekurzió Hanoi tornyai Hanoi tornyai lépései 3 korong esetén 1. korong A --> B 2. korong A --> T 1. korong B --> T 3. korong A --> B 1. korong T --> A 2. korong T --> B 1. korong A --> B Fodor A. (Pannon Egyetem) Információs technológia november / 41

14 Rekurzió Hanoi tornyai Hanoi tornyai lépései 6 korong esetén 1. korong A --> T 1. korong T --> B 2. korong A --> B 2. korong T --> A 1. korong T --> B 1. korong B --> A 3. korong A --> T 3. korong T --> B 1. korong B --> A 1. korong A --> T 2. korong B --> T 2. korong A --> B 1. korong A --> T 1. korong T --> B 4. korong A --> B 4. korong T --> A 1. korong T --> B 1. korong B --> A 2. korong T --> A 2. korong B --> T 1. korong B --> A 1. korong A --> T 3. korong T --> B 3. korong B --> A 1. korong A --> T 1. korong T --> B 2. korong A --> B 2. korong T --> A 1. korong T --> B 1. korong B --> A 5. korong A --> T 5. korong T --> B 1. korong B --> A 1. korong A --> T 2. korong B --> T 2. korong A --> B 1. korong A --> T 1. korong T --> B 3. korong B --> A 3. korong A --> T 1. korong T --> B 1. korong B --> A 2. korong T --> A 2. korong B --> T 1. korong B --> A 1. korong A --> T 4. korong B --> T 4. korong A --> B 1. korong A --> T 1. korong T --> B 2. korong A --> B 2. korong T --> A 1. korong T --> B 1. korong B --> A 3. korong A --> T 3. korong T --> B 1. korong B --> A 1. korong A --> T 2. korong B --> T 2. korong A --> B 1. korong A --> T 1. korong T --> B 6. korong A --> B Fodor A. (Pannon Egyetem) Információs technológia november / 41

15 Rekurzió Rekurzió A rekurzió átalakítása A rekurzív algoritmusok sokszor egyszerűbbnek tűnnek, de nem biztos, hogy a rekurzív megoldás a legoptimálisabb Rekurzív algoritmus bizonyos esetekben egyszerűbb felépítéssű (könyebben megérthető) A rekurzió ciklussá alakítható A ciklus rekurzív algorítmussá is alakítható Rekurzív adatszerkezetek Rekurzív görbék (fraktálok) (Koch görbe, Mandelbrot halmaz) Fodor A. (Pannon Egyetem) Információs technológia november / 41

16 Rekurzió-ciklus átalakítás Rekurzió A rekurzió átalakítása Minden rekurzió megvalósítható ciklussal és segédváltozókkal A megoldás bizonyos esetekben nem egyszerű! Fodor A. (Pannon Egyetem) Információs technológia november / 41

17 Fibonacci sorozat Rekurzió A rekurzió átalakítása, Fibonacci Megadása: 0, ha n=0 1, ha n=1 fib(n-1)+fib(n-2), ha n>1 A sorozat rekurzív alakban adott Sorozat elemei: fib(0)+fib(1) = 0+1 = fib(1)+fib(2) = fib(1)+[fib(0)+fib(1)] = 1+[0+1] = fib(2)+fib(3) = [fib(0)+fib(1)]+[fib(1)+fib(2)] = [fib(0)+fib(1)]+[fib(1)+[fib(0)+fib(1)]] = [0+1]+[1+[0+1]] = 3 Fodor A. (Pannon Egyetem) Információs technológia november / 41

18 Rekurzió A rekurzió átalakítása, Fibonacci Fibonacci sorozatot kiszámoló rekurzív függvény Függvény kódja: long fib(int n) if (n < 0) return -1; if (n <= 1) return n; else return fib(n-1) + fib(n-2); Meghívása:... for(i=0; i<20; i++) printf("fib( %d ) = %d \n", i, fib(i));... Fodor A. (Pannon Egyetem) Információs technológia november / 41

19 Rekurzió A rekurzió átalakítása, Fibonacci Fibonacci sorozatot kiszámoló NEM rekurzív függvény (1.) Hátulról számolva (n értékét folyamatosan csökkenti) Függvény kódja: long fib_cikl_hatul(long n) long x,y,z; if (n < 0) return -1; if (n == 0) return 0; x=0; y=1; z=1; while (n > 1) z=x+y; x=y; y=z; n=n-1; return z; Meghívása: for(i=0; i<20; i++) printf("fib_cikl_hatul( %d ) = %d \n", i, fib_cikl_hatul(i));... Fodor A. (Pannon Egyetem) Információs technológia november / 41

20 Rekurzió A rekurzió átalakítása, Fibonacci Fibonacci sorozatot kiszámoló NEM rekurzív függvény (1.)(tömörebben) Hátulról számolva (n értékét folyamatosan csökkenti) Függvény kódja: long fib_cikl_hatul_for(long n) long x,y,z; if (n < 0) return -1; if (n == 0) return 0; for(x=0, y=1, z=1; n > 1; n=n-1) z=x+y; x=y; y=z; return z; Meghívása:... for(i=0; i<20; i++) printf("fib_cikl_hatul_for( %d ) = %d \n", i, fib_cikl_hatul_for(i));... Fodor A. (Pannon Egyetem) Információs technológia november / 41

21 Rekurzió A rekurzió átalakítása, Fibonacci Fibonacci sorozatot kiszámoló NEM rekurzív függvény (2.) Elölről számolva (n értékét folyamatosan növeli) Függvény kódja: long fib_cikl_elol(long n) long x,y,z,i; if (n < 0) return -1; if (n == 0) return 0; x=0; y=1; z=n; for(i=1; i < n; i++) z=x+y; x=y; y=z; return z; Meghívása:... for(i=0; i<20; i++) printf("fib_cikl_elol( %d ) = %d \n", i, fib_cikl_elol(i));... Fodor A. (Pannon Egyetem) Információs technológia november / 41

22 Fibonacci sorozat tagjai Rekurzió A rekurzió átalakítása, Fibonacci fib( 0 ) = 0 fib_cikl_hatul( 0 ) = 0 fib( 1 ) = 1 fib_cikl_hatul( 1 ) = 1 fib( 2 ) = 1 fib_cikl_hatul( 2 ) = 1 fib( 3 ) = 2 fib_cikl_hatul( 3 ) = 2 fib( 4 ) = 3 fib_cikl_hatul( 4 ) = 3 fib( 5 ) = 5 fib_cikl_hatul( 5 ) = 5 fib( 6 ) = 8 fib_cikl_hatul( 6 ) = 8 fib( 7 ) = 13 fib_cikl_hatul( 7 ) = 13 fib( 8 ) = 21 fib_cikl_hatul( 8 ) = 21 fib( 9 ) = 34 fib_cikl_hatul( 9 ) = 34 fib( 10 ) = 55 fib( 11 ) = fib( 12 ) = 144 fib_cikl_elol( 0 ) = 0 fib( 13 ) = 233 fib_cikl_elol( 1 ) = 1 fib( 14 ) = 377 fib_cikl_elol( 2 ) = 1 fib( 15 ) = 610 fib_cikl_elol( 3 ) = 2 fib( 16 ) = 987 fib_cikl_elol( 4 ) = 3 fib( 17 ) = 1597 fib_cikl_elol( 5 ) = 5 fib( 18 ) = 2584 fib_cikl_elol( 6 ) = 8 fib( 19 ) = 4181 fib_cikl_elol( 7 ) = 13 fib( 20 ) = 6765 fib_cikl_elol( 8 ) = 21 fib( 21 ) = fib_cikl_elol( 9 ) = 34 fib( 22 ) = fib( 23 ) = fib( 24 ) = fib( 25 ) = fib( 26 ) = fib( 27 ) = fib( 28 ) = fib( 29 ) = fib( 30 ) = fib( 31 ) = fib( Fodor 32 ) A. = (Pannon Egyetem) Információs technológia november / 41

23 Fa adatszerkezet Fa adatszerkezet Fa adatszerkezet A keresés gyorsítása érdekében a láncolt adatszerkezetet fába rendeztük Fa: az adatszerkezet az egyes elemeknél elágazhat Kétfelé ágazó fákat bináris fának nevezzük A bináris fa és annak minden részfája vagy üres, vagy a gyökérelemből és annak bal és jobboldali részfájából áll Levél: Egy elemnek nincs utódja Kiegyensúlyozott fa: az összes levél azonos szinten van Rekurzív adatszerkezet rekurzív algoritmusokkal egyszerűbb kezelni A keresés az elemek 2-es alapú logaritmusával arányos műveletet igényel Fodor A. (Pannon Egyetem) Információs technológia november / 41

24 Fa adatszerkezet Fa adatszerkezet Fa adatszerkezet Adatszerkezetnek tartalmaznia kell: adat jobb oldali fa címe bal oldali fa címe struct faelem int adat; struct faelem *bal, *jobb; ; Fodor A. (Pannon Egyetem) Információs technológia november / 41

25 Fa felépítése Fa adatszerkezet Fa felépítése 2. adat elhelyezése 3. adat elhelyezése Fodor A. (Pannon Egyetem) Információs technológia november / 41

26 Fa felépítése Fa adatszerkezet Fa felépítése 4. adat elhelyezése 5. adat elhelyezése Fodor A. (Pannon Egyetem) Információs technológia november / 41

27 Fa felépítése Fa adatszerkezet Fa felépítése 6. adat elhelyezése Fodor A. (Pannon Egyetem) Információs technológia november / 41

28 Fa felépítése Fa adatszerkezet Fa felépítése Fa adatszerkezetbe való rendezett beszúrást végző függvény kódja: void beszur(faelem **ppfa, int ertek) if(!*ppfa ) *ppfa = (faelem*) malloc(sizeof(faelem)); (*ppfa)->adat = ertek; (*ppfa)->bal = (*ppfa)->jobb = NULL; else if ( (*ppfa)->adat!= ertek ) if ((*ppfa)->adat > ertek) beszur( &(*ppfa)->bal, ertek); else beszur( &(*ppfa)->jobb, ertek); Fodor A. (Pannon Egyetem) Információs technológia november / 41

29 Fa felépítése Fa adatszerkezet Fa felépítése Fa adatszerkezetbe való beszúrást végző függvény meghívása: void main(void) faelem *fa; fa = NULL; beszur(&fa, 4); beszur(&fa, 1); beszur(&fa, 3); beszur(&fa, 6); beszur(&fa, 2); beszur(&fa, 5); Fodor A. (Pannon Egyetem) Információs technológia november / 41

30 Fa adatszerkezet Fa felépítése A függvényhívások után felépített fa Beszúrt adatok: 4, 1, 3, 6, 2, 5 Fodor A. (Pannon Egyetem) Információs technológia november / 41

31 Fa bejárása Fa adatszerkezet Fa felépítése Több startégia van Stratégiak közötti kölönbség, hogy mikor dolgozzuk fel az adatot. Preorder Először feldogozom az adatot, bejárom a bal faágat, bejárom a jobb oldali faágat Inorder Bejárom a bal faágat, feldolgozom az adatot, bejárom a jobb oldali faágat Postorder Bejárom a bal faágat, bejárom a jobb oldali faágat, feldolgozom az adatot Fodor A. (Pannon Egyetem) Információs technológia november / 41

32 Preorder bejárás Fa adatszerkezet Fa bejárása Először feldogozom az adatot, bejárom a bal faágat, bejárom a jobb oldali faágat void preorder(faelem *fa) if (fa) printf("%d\n", fa->adat); preorder(fa->bal); preorder(fa->jobb); Fodor A. (Pannon Egyetem) Információs technológia november / 41

33 Fa adatszerkezet Preorder bejárás eredménye Fa bejárása Először feldogozom az adatot, bejárom a bal faágat, bejárom a jobb oldali faágat Eredmény: void preorder(faelem *fa) if (fa) printf("%d\n", fa->adat); preorder(fa->bal); preorder(fa->jobb); Fodor A. (Pannon Egyetem) Információs technológia november / 41

34 Inorder bejárás Fa adatszerkezet Fa bejárása Bejárom a bal faágat, feldolgozom az adatot, bejárom a jobb oldali faágat void inorder(faelem *fa) if (fa) inorder(fa->bal); printf("%d\n", fa->adat); inorder(fa->jobb); Fodor A. (Pannon Egyetem) Információs technológia november / 41

35 Fa adatszerkezet Inorder bejárás eredménye Fa bejárása Bejárom a bal faágat, feldolgozom az adatot, bejárom a jobb oldali faágat Eredmény: Rendezetten adja vissza az adatokat void inorder(faelem *fa) if (fa) inorder(fa->bal); printf("%d\n", fa->adat); inorder(fa->jobb); Fodor A. (Pannon Egyetem) Információs technológia november / 41

36 Postorder bejárás Fa adatszerkezet Fa bejárása Bejárom a bal faágat, bejárom a jobb oldali faágat, feldolgozom az adatot void postorder(faelem *fa) if (fa) postorder(fa->bal); postorder(fa->jobb); printf("%d\n", fa->adat); Fodor A. (Pannon Egyetem) Információs technológia november / 41

37 Fa adatszerkezet Postorder bejárás eredménye Fa bejárása Bejárom a bal faágat, bejárom a jobb oldali faágat, feldolgozom az adatot Eredmény: void postorder(faelem *fa) if (fa) postorder(fa->bal); postorder(fa->jobb); printf("%d\n", fa->adat); Fodor A. (Pannon Egyetem) Információs technológia november / 41

38 Fa adatszerkezet Műveletek a fa adatszerkezettel A fa adatszerkezet egyéb tulajdonságai Beszúrás Törlése Bejárás Keresés Fa diagnosztizálása Mélység Kiegyensúlyozottság Van-e jobb/bal ága Fodor A. (Pannon Egyetem) Információs technológia november / 41

39 Bináris fa Fa adatszerkezet A fa adatszerkezet egyéb tulajdonságai Adattagjai: adat 2 ág (jobb-bal) Megvalósítás: struct binfaelem int adat; struct binfaelem *bal, *jobb; ; Fodor A. (Pannon Egyetem) Információs technológia november / 41

40 Nem bináris fa Fa adatszerkezet A fa adatszerkezet egyéb tulajdonságai Adattagjai: adat 2...n ág Megvalósítás: #define N 6 struct nembinfaelem int adat; struct nembinfaelem *faagak[ N ]; ; Fodor A. (Pannon Egyetem) Információs technológia november / 41

41 Elfajult fa Fa adatszerkezet A fa adatszerkezet egyéb tulajdonságai A fa valamely ága sokkal nagyobb mélységű, mint a többi Az építés során keletkezhetnek a gondok Például: ( ) Fodor A. (Pannon Egyetem) Információs technológia november / 41

Információs Technológia

Információs Technológia Információs Technológia ZH feladatok megoldása (2009.11.26.) Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2009. november 26.

Részletesebben

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n! Programozás alapjai C nyelv 9. gyakorlat Szeberényi Imre BME IIT Rekurzió A feladat algoritmusa eleve rekurzív formában adott (ld: n!). A valójában nem rekurzív de valami hasznot húzunk

Részletesebben

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus Programozás alapjai C nyelv 9. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.14. -1- Rekurzió A feladat algoritmusa eleve rekurzív

Részletesebben

A programozás alapjai 1 Rekurzió

A programozás alapjai 1 Rekurzió A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder

Részletesebben

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 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 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 Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Rekurzív algoritmusok

Rekurzív algoritmusok Rekurzív algoritmusok 11. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. november 14. Sergyán (OE NIK) AAO 11 2011. november 14. 1 / 32 Rekurzív

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes

Részletesebben

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

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

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

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú

Részletesebben

2015, Diszkrét matematika

2015, Diszkrét matematika Diszkrét matematika 4. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2015, őszi félév Miről volt szó az elmúlt előadáson? Számtartományok:

Részletesebben

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

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime? Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia Sor és verem adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2009. november 19. Alapötlet

Részletesebben

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

Részletesebben

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

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

Részletesebben

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

10. előadás Speciális többágú fák 10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.

Részletesebben

Kupac adatszerkezet. 1. ábra.

Kupac adatszerkezet. 1. ábra. Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok Adatszerkezetek és algoritmusok 1 Bevezetés Adatszerkezet egyszerű vagy összetett alapadatok rendszerének matematikai, logikai modellje elég jó ahhoz, hogy tükrözze a valós kapcsolatokat elég egyszerű

Részletesebben

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

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

Érdekes informatika feladatok

Érdekes informatika feladatok okozni, hogy az egyik készülékről a másikra hogyan vigye át az információt és nem kell megjegyeznie, hogy hova mentette el a dolgait. o A trend egyértelmű, az összes médium és a szórakoztatás is digitális

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Fák 2009.04.06. 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

Fák 2009.04.06. 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 Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Témakörök 2 Fa (Tree): csomópontok

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek 5. előadás Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan < A, R > rendezett pár, amelynél van egy kitüntetett r A gyökérelem úgy, hogy: 1. r nem lehet végpont, azaz a A esetén R(a,r)

Részletesebben

Programozás C nyelven 6. ELŐADÁS. Sapientia EMTE

Programozás C nyelven 6. ELŐADÁS. Sapientia EMTE Programozás C nyelven 6. ELŐADÁS Sapientia EMTE 2015-16 ELJÁRÁSOK: void-függvények Olvassu k be szá ot a bille tyűzetről, és írassuk ki a égyzeteiket a képer yőre. int main(){ int n, i, szam; cin >> n;

Részletesebben

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

Számláló rendezés. Példa Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a

Részletesebben

Tartalomjegyzék Algoritmusok - pszeudókód... 1 42

Tartalomjegyzék Algoritmusok - pszeudókód... 1 42 Tartalomjegyzék Algoritmusok - pszeudókód... 1 42 Abszolút érték...1 Hányados ismételt kivonással...1 Legnagyobb közös osztó... 1 2 Páros számok szűrése...2 Palindrom számok... 2 3 Orosz szorzás...3 Minimum

Részletesebben

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

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás Preorder ejárás Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban lévő adatokra.

Részletesebben

Körkörös listák. fej. utolsó. utolsó. fej

Körkörös listák. fej. utolsó. utolsó. fej Körkörös listák fej utolsó fej utolsó Példa. Kiszámolós játék. Körben áll n gyermek. k-asával kiszámoljuk őket. Minden k-adik kilép a körből. Az nyer, aki utolsónak marad. #include using namespace

Részletesebben

Algoritmusok pszeudókód... 1

Algoritmusok pszeudókód... 1 Tartalomjegyzék Algoritmusok pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 1 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 2 Minimum

Részletesebben

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk:

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk: 8. előadás Ismétlés Dinamikus adatszerkezetek: listák (egyszeresen vagy többszörösen láncolt), fák. Kétfelé ágazó fa: bináris fa Dinamikus adatszerkezetek - önhivatkozó adatstruktúrák: adatok és reájuk

Részletesebben

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.

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. 1. A REKURZIÓ FOGALMA 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. 1.1 Bevezető példák: 1.1.1 Faktoriális Nemrekurzív

Részletesebben

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)

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 Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

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

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok. Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Programozás alapjai 8.Gy: Program struktúra

Programozás alapjai 8.Gy: Program struktúra Programozás alapjai 8.Gy: Program struktúra Elvarázsolt matekóra P R O A L A G 32/1 B ITv: MAN 2018.11.02 Programozás történelem Kezdetben egy program egyetlen kódsorozat volt (ún. monolitikus program)

Részletesebben

2016, Diszkrét matematika

2016, Diszkrét matematika Diszkrét matematika 2. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? Követelmények,

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Algoritmusok pszeudókód... 1

Algoritmusok pszeudókód... 1 Tartalomjegyzék Algoritmusok pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 2 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 3 Minimum

Részletesebben

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

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

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

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ás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Programozás alapjai 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Háziellenőrzés Egészítsd ki úgy a simplemaths.c programot, hogy megfelelően működjön. A program feladata az inputon soronként megadott

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

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

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít

Részletesebben

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6. 6. előadás, AVL-fa, piros-fekete fa Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 6.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles

Részletesebben

Absztrakt adatstruktúrák A bináris fák

Absztrakt adatstruktúrák A bináris fák ciós lámpa a legnagyobb élettartamú és a legjobb hatásfokú fényforrásnak tekinthető, nyugodtan mondhatjuk, hogy a jövő fényforrása. Ezt bizonyítja az a tény, hogy ezen a területen a kutatások és a bejelentett

Részletesebben

Bináris keresőfa. Felépítés, alapvető műveletek. 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 Bináris keresőfa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Bináris keresőfa Rekurzív

Részletesebben

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

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

Rendezettminta-fa [2] [2]

Rendezettminta-fa [2] [2] Rendezettminta-fa Minden p ponthoz tároljuk a p gyökerű fa belső pontjainak számát (méretét) Adott elem rangja: az elem sorszáma (sorrendben hányadik az adatszekezetben) Adott rangú elem keresése - T[r]

Részletesebben

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió BME MOGI Gépészeti informatika 3. 1. feladat Végezze el a következő feladatokat! Kérjen be számokat 0 végjelig, és határozza meg az átlagukat! A feladat megoldásához írja meg a következő metódusokat! a.

Részletesebben

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

Rendezések. Összehasonlító rendezések 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

Részletesebben

Rekurzió. Horváth Gyula. horvath@inf.elte.hu

Rekurzió. Horváth Gyula. horvath@inf.elte.hu 1. ábra. Rekurzió Horváth Gyula horvath@inf.elte.hu 1. Feladat: Sorbaállítások száma Hány féleképpen lehet sorbaállítani az osztály tanulóit? Bemenet: a tanulók n száma. Kimenet: ahány félekeppen az n

Részletesebben

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

7 7, ,22 13,22 13, ,28 Általános keresőfák 7 7,13 13 13 7 20 7 20,22 13,22 13,22 7 20 25 7 20 25,28 Általános keresőfa Az általános keresőfa olyan absztrakt adatszerkezet, amely fa és minden cellájában nem csak egy (adat), hanem

Részletesebben

Programozás I gyakorlat. 5. Struktúrák

Programozás I gyakorlat. 5. Struktúrák Programozás I gyakorlat 5. Struktúrák Bemelegítés Írj programot, amely beolvassa 5 autó adatait, majd kiírja az adatokat a képernyőre. Egy autóról a következőket tároljuk: maximális sebesség fogyasztás

Részletesebben

III. Adatszerkezetek és algoritmusok

III. Adatszerkezetek és algoritmusok III. Adatszerkezetek és algoritmusok 1 Bevezetés Adatszerkezet egyszerű vagy összetett alapadatok rendszerének matematikai, logikai modellje elég jó ahhoz, hogy tükrözze a valós kapcsolatokat elég egyszerű

Részletesebben

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra) 6. Fabejáró algoritmusok Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban

Részletesebben

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

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet 7. BINÁRIS FÁK Az előző fejezetekben már találkoztunk bináris fákkal. Ezt a központi fontosságú adatszerkezetet most vezetjük be a saját helyén és az általános fák szerepét szűkítve, csak a bináris fát

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 3. Kiegyensúlyozott keresőfák A T tulajdonság magasság-egyensúlyozó

Részletesebben

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

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A

Részletesebben

Adatszerkezet - műveletek

Adatszerkezet - műveletek Adatszerkezet - műveletek adatszerkezet létrehozása adat felvétele adat keresése adat módosítása adat törlése elemszám visszaadása minden adat törlése (üresít) adatszerkezet felszámolása (megszüntet) +

Részletesebben

10. gyakorlat Tömb, mint függvény argumentum

10. gyakorlat Tömb, mint függvény argumentum 10. gyakorlat Tömb, mint függvény argumentum 1. feladat: A 6. gyakorlat 1. feladatát oldja meg a strukturált programtervezési alapelv betartásával, azaz minden végrehajtandó funkciót külön függvényben

Részletesebben

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás

Részletesebben

Gyakori elemhalmazok kinyerése

Gyakori elemhalmazok kinyerése Gyakori elemhalmazok kinyerése Balambér Dávid Budapesti M szaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Számítástudomány szakirány 2011 március 11. Balambér Dávid (BME) Gyakori

Részletesebben

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3) Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák 2012. március 27. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? Dinamikus adatszerkezetek Önhivatkozó struktúra keresés, beszúrás,

Részletesebben

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

Fa (Tree): csomópontok (nodes) halmaza, amelyeket élek (edges) kötnek össze, és teljesülnek az alábbi feltételek: Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás Piros-fekete fa B-fa 2 Fa

Részletesebben

Programozás I. C nyelv

Programozás I. C nyelv Programozás I. C nyelv 12. előadás Bináris fa, bináris kereső fa, kupac, időkezelő függvények Veszprémi Egyetem Heckl István, heckl@dcs.vein.hu 1 Fogalmak Fa: összefüggő, körmentes gráf, azaz bármely két

Részletesebben

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

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12 Módosítható Prioritási sor Binomiális kupaccal modosit(x,k) {! if (k>x.kulcs) {!! x.kulcs=k ;!! y=x!! z=x.apa ;!! while(z!=nil and y.kulcs

Részletesebben

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

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy. Bevezetés 1. Definíció. Az alsó egészrész függvény minden valós számhoz egy egész számot rendel hozzá, éppen azt, amely a tőle nem nagyobb egészek közül a legnagyobb. Az alsó egészrész függvény jele:,

Részletesebben

Alprogramok, paraméterátadás

Alprogramok, paraméterátadás ELTE Informatikai Kar, Programozási Nyelvek és Fordítóprogramok Tanszék October 24, 2016 Programozási nyelvek Alprogramok Függvények, eljárások Metódusok Korutinok stb. Alprogramok Alprogram: olyan nyelvi

Részletesebben

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli A versenyzők figyelmébe: 1. Minden tömböt 1-től kezdődően indexelünk. 2. A rácstesztekre (A rész)

Részletesebben

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

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Rekurzió Klasszikus példák Faktoriális n! n * n 1! ha n 0 1 ha n 0 Fibonacci-számok Fib n 0 ha n 0 1 ha n 1 Fib n 1 Fib n 2 ha n 1 A

Részletesebben

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE Algoritmusokfelülnézetből 1. ELŐADÁS Sapientia-EMTE 2015-16 Algoritmus Az algoritmus kifejezés a bagdadi arab tudós, al-hvárizmi(780-845) nevének eltorzított, rosszul latinra fordított változatából ered.

Részletesebben

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat Listák félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat A verem LIFO lista (Last In First Out) angolul stack, románul stivă bevitel

Részletesebben

5. Rekurzió és iteráció (Rekurzív programok átírása nemrekurzívvá)

5. Rekurzió és iteráció (Rekurzív programok átírása nemrekurzívvá) 5. Rekurzió és iteráció (Rekurzív programok átírása nemrekurzívvá) Az elõzõekben megbarátkoztunk a rekurzióval, mint egy problémamegoldási stratégiával, sõt megvizsgáltunk néhány programozási nyelvet a

Részletesebben

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

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Függvények int, long 1. Adott a mellékelt f alprogram.

Függvények int, long 1. Adott a mellékelt f alprogram. Függvények int, long 1. Adott a mellékelt f alprogram. Határozzon meg két különböző természetes értéket az [1,50] intervallumból, amelyeket felvehet az x egész változó, úgy hogy az f(30,x) térítse vissza

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek Sorozatszámítás tétele Például az X tömbben kövek súlyát tároljuk. Ha ki kellene számolni az összsúlyt, akkor az S = f(s, X(i)) helyére S = S + X(i) kell írni. Az f0 tartalmazza

Részletesebben

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések

Részletesebben

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

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 Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

Feladat. Ternáris fa. Típusspecikáció. Reprezentáció. Absztrakt implementáció. Érdi Gerg EAF II. 4/3.

Feladat. Ternáris fa. Típusspecikáció. Reprezentáció. Absztrakt implementáció. Érdi Gerg EAF II. 4/3. Feladat djuk meg, hogy egy ternáris fa INORDER bejárás szerint sorozatba f zött értékei között mekkora a leghosszabb csupa pozitív számot tartalmazó részsorozat. Ternáris fa Típusspecikáció z alaphalmaz

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

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

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 5. Vágható-egyesíthető Halmaz adattípus megvalósítása önszervező

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia A C programozási nyelv elemei, rendező algoritmusok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010.

Részletesebben

Algoritmizálás, adatmodellezés tanítása 11. előadás. (Horváth Gyula előadása alapján)

Algoritmizálás, adatmodellezés tanítása 11. előadás. (Horváth Gyula előadása alapján) Algoritmizálás, adatmodellezés tanítása 11. előadás (Horváth Gyula előadása alapján) Rekurzió Klasszikus példák Faktoriális n! Fibonacci-számok Fib n A rekurzió lényege: önhivatkozás n * n 1! ha n 0 1

Részletesebben

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

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 Keresés Rendezés Feladat 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 2016. november 7. Farkas B., Fiala

Részletesebben

Adatbázis rendszerek Gy: Algoritmusok C-ben

Adatbázis rendszerek Gy: Algoritmusok C-ben Adatbázis rendszerek 1. 1. Gy: Algoritmusok C-ben 53/1 B ITv: MAN 2015.09.08 Alapalgoritmusok Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés Összefésülés Szétválogatás Gyorsrendezés 53/2 Összegzés

Részletesebben

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 10. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 2-3 fák Hatékony keresőfa-konstrukció. Ez is fa, de a binárisnál annyival bonyolultabb hogy egy nem-levél csúcsnak 2 vagy 3 fia

Részletesebben

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

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal: Buborékrendezés: For ciklussal: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábr.: ha p egy mutató típusú változó akkor p^ az általa mutatott adatelem, p^.adat;p^.mut. A semmibe mutató ponter a NIL.Szabad

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja

Részletesebben

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

Algoritmusok és adatszerkezetek I. 1. előadás Algoritmusok és adatszerkezetek I 1 előadás Típusok osztályozása Összetettség (strukturáltság) szempontjából: elemi (vagy skalár, vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási

Részletesebben

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

Rekurzió. Működése, programtranszformációk. Programozás II. előadás.   Szénási Sándor. Rekurzió Működése, programtranszformációk előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Rekurzió Rekurzió alapjai Rekurzív

Részletesebben

Programozás alapjai 9.Gy: Struktúra 2.

Programozás alapjai 9.Gy: Struktúra 2. Programozás alapjai 9.Gy: Struktúra 2. Ördögi részletek P R O A L A G 35/1 B ITv: MAN 2018.11.10 Euró árfolyam statisztika Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR).

Részletesebben

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

Ö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. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben