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

Hasonló dokumentumok
Algoritmizálás és adatmodellezés 2. előadás

Adatszerkezetek I. 1. előadás

Algoritmizálás, adatmodellezés 1. előadás

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

Algoritmizálás, adatmodellezés 1. előadás

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

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

Adatszerkezetek 1. előadás

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

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

Struktúra nélküli adatszerkezetek

Adatszerkezetek I. 4. előadás

Adatszerkezetek 1. Dr. Iványi Péter

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

Multihalmaz, intervallumhalmaz

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

Adatszerkezetek II. 1. előadás

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

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

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

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

22. GRÁFOK ÁBRÁZOLÁSA

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Adatszerkezetek II. 10. előadás

Egyirányban láncolt lista

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

Összetett programozási tételek

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

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

3. TÖMBÖK A tömb absztrakt adattípus Legyen T az E alaptípus feletti k ( 1) dimenziós tömb típus. Vezessük be az I I1

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

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Táblázatok fontosabb műveletei 1

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

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

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

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

Egyszerű programozási tételek

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

Prmea2_ Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát. Például:

Algoritmuselmélet 2. előadás

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

Érdekes informatika feladatok

Adatszerkezetek 2. Dr. Iványi Péter

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

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

Láncolt listák. PPT 2007/2008 tavasz.

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

Halmaz típus Értékhalmaz:

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

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

Programozási segédlet

Adatszerkezetek és algoritmusok

Hatékonyság 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

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

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

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

Web-programozó Web-programozó

Adatszerkezetek II. 2. előadás

Adatszerkezetek I. 9. előadás

Adatszerkezetek 2. Dr. Iványi Péter

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

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

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

Visszalépéses kiválogatás

Generikus osztályok, gyűjtemények és algoritmusok

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

Programozási technológia

Programozás I gyakorlat

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 31. Széchenyi István Egyetem, Gy r

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

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

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Visszalépéses keresé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..

Algoritmusok és adatszerkezetek gyakorlat 07

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)

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

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.

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

Adatszerkezetek Bevezetés Adatszerkezet Adatszerkezet típusok Műveletek Bonyolultság

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

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

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

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

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

Elemi adatszerkezetek

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

Gráfelméleti feladatok. c f

Programozás II. előadás

Az informatika kulcsfogalmai

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

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

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

1.előadás Tornai Kálmán

Átírá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 módok Keresztszorzat AxB Unió AB Sokaság sok azonos típusú elem Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 2/33

Típusok osztályozása Sokaság osztályozása rákövetkezés szerint Halmaz: nincs rákövetkezési reláció Sorozat: minden elemet egy elem követ és egy előz meg (kivéve esetleg a két szélső elemet) Hierarcikus struktúra: minden elemet egy előz meg, de több is követet Hálós struktúra: minden elemet több előzet meg és több is követet Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 3/33

Típusok osztályozása Sokaságtípusok megjelenése Halmaz: almaz, multialmaz, intervallumalmaz, táblázat, diszjunkt almazfelbontás Sorozat: tömb, verem, sor, prioritási sor, lista Hierarcikus struktúra: bináris fa, nem bináris fa Hálós struktúra: irányítatlan gráf, irányított gráf Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 4/33

Sorozattípus műveletei Üres Létreoz, elemek nélkül Létreoz Létreoz, struktúrától függő elemekkel Üres?/Teli? Ellenőrzi, ogy van-e eleme / bővítető lenne-e? Elemszám Hány eleme van? Beilleszt Struktúrától függő elyre új elemet illeszt Kiagy Struktúrától függő elyről elemet agy el Első/Utolsó Első / utolsó elemének értékét adja Elejéről/Végéről Kiveszi a sorozat első / utolsó elemét Elsőutániak/Utolsóelőttiek Eldobja az első / utolsó elemet Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 5/33

Sorozattípus műveletei Elejére/Végére Érték Módosít Elsőre/Utolsóra A sorozat első eleme elé / utolsó eleme mögé illeszt egy újat Struktúrától függően megatározott elemének értékét adja vissza Struktúrától függően megatározott elemének új értéket ad A struktúra első / utolsó elem lesz az aktuális (a volt ilyen) Előzőre/Következőre A struktúra aktuális eleme (a volt ilyen) legyen az eddigit megelőző / követő Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 6/33

Sorozattípusok fajtái Típuskonstrukció Tömb Lista Sor Prioritási sor Verem InputSzekvenciálisFile OutputSzekvenciálisFile DirektFile AsszociatívFile Tevékenységalmaz (Létreoz, Elemszám,) Érték, Módosít Üres, Üres?, Teli?, Beilleszt, Kiagy, Elsőre, Utolsóra, Előzőre, Következőre, Érték, Módosít Üres, Üres?, Teli?, Elemszám, Első, Elejéről, Végére Üres, Üres?, Teli?, Elemszám, Első, Elejéről, Üres, Üres?, Teli?, Elemszám, Első, Elejére, Elejéről Üres?, Elejéről Üres, Végére Üres, Létreoz, Üres?, Teli?, Elemszám, Érték, Módosít Üres, Üres?, Teli?, Elemszám, Érték, Módosít Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 7/33

Sorozat típusok ábrázolása Folytonos, szekvenciális ábrázolás: az elemeket a memóriában a kezdőcímtől szorosan egymásután elyezzük el, a tárolás sorrendje megegyezik a logikai sorrenddel Az elemek címe számítató Memória Elemsorszám: 1 2 3 N kezdőcím Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 8/33

Sorozat típusok ábrázolása Láncolt ábrázolás: az elemek a memóriában folytonos területen elyezkednek el, a rákövetkezést index-szel biztosítjuk (statikus láncolás) Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 9/33

Sorozat típusok ábrázolása Láncolt ábrázolás: az elemek a memóriában folytonos területen elyezkednek el, a rákövetkezést mutatóval biztosítjuk (dinamikus láncolás) Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 10/33

Sorozat típusok ábrázolása Blokkolt ábrázolás: ötvözi az előbbi kettőt úgy, ogy láncot oz létre az elemek egy adott számú elemet tartalmazó tömbjéből Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 11/33

Sorozat típusok ábrázolása Folytonos, szekvenciális ábrázolás: atékony elykiasználás címkiszámítás (címfüggvény) leetősége struktúra módosítás (beszúrás, törlés) munkaigényes előre rögzített memóriaméret Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 12/33

Sorozat típusok ábrázolása Statikus láncolás: elyfoglalás növekedés (minden elem mellé kell egy index) címkiszámítás nem leetséges adott elem eléréséez a struktúra egy részét be kell járni struktúra módosítás (beszúrás, törlés) gyors előre rögzített maximális memóriaméret Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 13/33

Sorozat típusok ábrázolása Dinamikus láncolás: elyfoglalás növekedés (minden elem mellé kell egy mutató) címkiszámítás nem leetséges adott elem eléréséez a struktúra egy részét be kell járni struktúra módosítás (beszúrás, törlés) gyors az igényeknek megfelelően változó memóriaméret Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 14/33

Ábrázolások megvalósítása Folytonos, szekvenciális ábrázolás: tömb elemek sorozata, elem=(ossz,értékek) vagy (értékek,végjel) Láncolás: első elem, elem=(érték, következő elem) Blokkolás: első blokk, blokk=(elemszám, tömb, következő blokk) Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 15/33

Ábrázolások megvalósítása Statikus láncolás, blokkolás: első, következő megadása = tömbindex Dinamikus láncolás, blokkolás: első, következő megadása = mutató Megjegyzés: nem kizárt, ogy egy elemez több következő is tartozzon kétirányú láncolás, ierarcikus és álós típusok! Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 16/33

Tömbök Emlékeztető: vektor, mátrix, mátrixok ábrázolása (sorfolytonos, oszlopfolytonos) címfüggvények cím(a,i)=kezdőcím(a)+(i-1)*elemméret cím(b,i,j)=kezdőcím(b)+((i-1)*sorok száma+j-1)*elemméret sorfolytonos ábrázolás esetén Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 17/33

Tömbök Emlékeztető: speciális vektorok (számtani sorozat, mértani sorozat) Speciális mátrixok (diagonális mátrix, alsó és felső áromszög mátrix, szimmetrikus mátrix, Toeplitz-mátrix, Hankel-mátrix, Vandermonde mátrix) a 0 0 0 b 0 0 0 0 c 0 0 0 0 0 x 0 0 0 y t1 t3 0 t t t 2 4 6 0 t t 5 7 0 t 8 t t?? 0 t t t??? 0 t? t? 0 0 0 1,1 1,1 1,2 1,3 1,n 1,2 2,2 0 0 1,2 2,2 2,3 2,n 1,3 2,3 3,3 0 1,3 2,3 3,3 3,n 0 1,n 2,n 3,n n,n 1,n 2,n 3,n n,n a b d c a b d e c a b a b d c a b e c a d b a b a c a c e d b a d b a c a c e Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 18/33

Hézagosan kitöltött tömbök Hézagosan kitöltött vektor elemfelsorolással: x i db,(i,x),(j,y), azaz a felesleges elemeket nem tároljuk, az értékes elemek indexét és értékét felsoroljuk Indexelés: keresés programozási tétel y j Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 19/33

Hézagosan kitöltött tömbök Érték(X,i): j:=1 Ciklus amíg j Xdb és i Xt(j)index j:=j+1 Ciklus vége Ha j Xdb akkor Érték:=Xt(j)érték különben Érték:=nemdef Függvény vége Megjegyzés: atékonyabb lenne index szerint növekvő sorrendben Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 20/33

Hézagosan kitöltött tömbök Módosít(X,i,e): j:=1 Ciklus amíg j Xdb és i Xt(j)index j:=j+1 Ciklus vége Ha j Xdb akkor Xt(j)érték:=e különben Xdb:=Xdb+1 Xt(Xdb)érték:=e Xt(Xdb)index:=i Eljárás vége Megjegyzés: a beszúrás lassúbb lenne index szerint növekvő sorrendben Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 21/33

Hézagosan kitöltött tömbök ElemTöröl(X,i): j:=1 Ciklus amíg j Xdb és i Xt(j)index j:=j+1 Ciklus vége Ha j Xdb akkor Xt(j):=Xt(Xdb) Xdb:=Xdb-1 Eljárás vége Megjegyzés: a törlés lassúbb lenne index szerint növekvő sorrendben Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 22/33

Hézagosan kitöltött tömbök Hézagosan kitöltött mátrix elemfelsorolással: x y z db,(i,j,x),(k,l,y),(p,q,z) azaz a felesleges elemeket nem tároljuk, az értékes elemek indexét és értékét felsoroljuk Indexelés: keresés programozási tétel Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 23/33

Hézagosan kitöltött tömbök Problémák: rendezett vektor esetén lassú az új elem beillesztés a mátrix elemeit ogyan rendezzük? sorfolytonosan? oszlopfolytonosan? bármelyik esetén lassú a másik irány szerinti elérés Megoldás: láncolás Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 24/33

Hézagosan kitöltött tömbök Hézagosan kitöltött vektor statikus láncolással Elem=(index,érték,következő) Érték(X,i): s:=xelső Ciklus amíg s seova és Xelem(s)index<i s:=xelem(s)következő Ciklus vége Ha s seova és Xelem(s)index=i akkor Érték:=Xelem(s)érték Eljárás vége Megjegyzés: index szerint növekvő sorrendben Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 25/33

Hézagosan kitöltött tömbök Hézagosan kitöltött vektor dinamikus láncolással Elem=(index,érték,következő) Érték(X,i): s:=xelső Ciklus amíg s seova és tartalom(s)index<i s:=tartalom(s)következő Ciklus vége Ha s seova és tartalom(s)index=i akkor Érték:=tartalom(s)érték Eljárás vége Megjegyzés: index szerint növekvő sorrendben Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 26/33

Hézagosan kitöltött tömbök Hézagosan kitöltött vektor dinamikus láncolással Módosít(X,i,e): előző:=seova; s:=xelső Ciklus amíg s seova és tartalom(s)index<i előző:=s; s:=tartalom(s)következő Ciklus vége Ha s seova és tartalom(s)index=i akkor tartalom(s)érték:=e különben Lefoglal(p); Betesz(X,p,előző,i,e) Eljárás vége Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 27/33

Hézagosan kitöltött tömbök Hézagosan kitöltött vektor dinamikus láncolással Betesz(X,p,előző,i,e): tartalom(p)index:=i; tartalom(p)érték:=e; Ha előző=seova akkor tartalom(p)következő:=xelső Xelső:=p különben tartalom(p)következő:= tartalom(előző)következő tartalom(előző)következő:=p Eljárás vége Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 28/33

Hézagosan kitöltött tömbök Hézagosan kitöltött mátrix dinamikus láncolással sor(i) az i-edik sor első eleme oszlop(j) a j-edik oszlop első eleme elem=(érték, kövsor, kövoszlop) oszlopfej 1 1 2 2 j j M M 1 1 1,j 1,M 2 2 i i 2,2 i,1 i,j i,m N N N,1 sorfej sorfej Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 29/33

Hézagosan kitöltött tömbök Hézagosan kitöltött mátrix dinamikus láncolással Érték(X,i,j): s:=xsor(i) Ciklus amíg s seova és tartalom(s)oszlop<j s:=tartalom(s)kövoszlop Ciklus vége Ha s seova és tartalom(s)oszlop=j akkor Érték:=tartalom(s)érték különben Érték:=Nemdef Eljárás vége Megjegyzés: elég a sorban megkeresni, a ott van, akkor az oszlopban is van Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 30/33

Hézagosan kitöltött tömbök Hézagosan kitöltött mátrix dinamikus láncolással Módosít(X,i,j,e): Sorkeres(es,van,s,i,j) Ha van akkor tartalom(s)érték:=e különben Oszlopkiválaszt(eo,i,j) Lefoglal(p); tartalom(p)érték:=e tartalom(p)sor:=i tartalom(p)oszlop:=j Sorba(X,es,p,i); Oszlopba(X,eo,p,j) Eljárás vége Megjegyzés: a a sorban megtaláltuk, módosítató, a nem, akkor keressük az oszlopban is és mindkettőbe betesszük Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 31/33

Hézagosan kitöltött tömbök Hézagosan kitöltött mátrix dinamikus láncolással Sorba(X,előző,p,i): Ha előző=seova akkor tartalom(p)kövoszlop:=xsor(i)első Xsor(i)első:=p különben tartalom(p)kövoszlop:= tartalom(előző)kövoszlop tartalom(előző)kövoszlop:=p Eljárás vége Szlávi Péter, Zsakó László: Adatszerkezetek I 20170213 10:52 32/33

Algoritmusok és adatszerkezetek I 1 előadás vége