Transcript Programmod
Algoritmusok és adatszerkezetek Mi is a számítógép? Olyan elektronikus berendezés, amely utasítások egy pontosan meghatározott csoportjának végrehajtására képes. Olyan elektronikus berendezés, amely az azt vezérlő utasítások hatására adatok feldolgozását képes elvégezni. A számítógépes feladatmegoldás feltételei Hardver A számítógép fizikai alkotóelemei. Szoftver Programok, adatok, dokumentációk. A program A program Olyan, a számítógép által közvetve, vagy közvetlenül végrehajtható utasításcsoport, amely egy probléma megoldása során felmerülő kiinduló állapotból meghatározott végeredményt állít elő. Kiinduló állapot: INPUT R T=R*R*3,14 Feldolgozás PRINT T Végeredmény Az algoritmus Az algoritmus Egy probléma véges számú lépésben történő, egyértelmű és teljes megoldása. Az elemi lépések végrehajthatók! Nincs kidolgozatlan eset! A Norbi automata algoritmusa (elavult) Egymást követő utasítások: SZEKVENCIA Készíts elő 50 Ft-os érméket! Ismételd meg 3x azt, hogy bedobsz egy érmét! Nyomd meg a kiválasztott Coca Cola gombját! Ha az automata kiadja az Colat, akkor idd meg! különben vágd oldalba a gépet! Utasítások ismétlése: ITERRÁCIÓ Elágazás valamilyen feltétel szerint: SZELEKCIÓ Az algoritmusok elemei Szekvencia Iteráció Szelekció Algoritmus leíró eszközök Élő beszéd, írott szöveg • Végy egy liter tejet, egy bögrényi búzadarát, 10dkg cukrot. • Forrald föl a tejet! • Öntsd hozzá a búzadarát! • Gyakori kevergetés mellett főzd készre! • Keverd hozzá a cukrot! • Edd meg amit főztél! Grafikus szimbólumok Algoritmus leíró eszközök az informatikában Folyamatábra (blokkdiagramm) Mondatszerű leírás Start Be: A Struktogramm Be: A A<0 N:=A*A Ki: N Stop i Ki: „Negatív” n Ki: „Pozitív” Be: A Be:B Ha A>B akkor Ki: A különben Ki: B Ha vége Ami minden eszközre jellemező • Az adatok változókban tárolódnak Az eszköz valahogyan ábrázolja: • az algoritmus elejét, végét, • adatok beolvasását, kiírását, • egyéb lépéseket (pl. értékadás), • a lépések sorrendjét (szekvencia), • elágazásokat (szelekció), • ismétléseket (iteráció) Folyamatábra Folyamatábra Start Be: R D:=R*2 K:=D*3,14 Ki: K i Stop • Az egyes lépéseket síkidomokkal írják le. • A végrehajtás sorrendjét nyilakkal ábrázolja. • Kisebb algoritmusok leírására alkalmas • Jól áttekinthető, könnyen érthető • Ciklusok leírása nehezebb Algoritmus eleje, vége Start • Szimbólum: Ovális • Csak egy START és egy STOP Start Be: A,B Stop A>B Ki: A Ki: B Stop Algoritmus eleje, vége Start • Szimbólum: Ovális • Csak egy START és egy STOP Start Be: A,B Stop A>B Ki: A Ki: B Stop Stop Beolvasás, kiírás Start Be: A Ki: A*A Stop • • • • Szimbólum: paralelogramma Ki: kifejezés Be: változó Be: vált1, vált2 Start Be: A,B Ki: A+B Stop Elemi műveletek, értékadás Start Be: R D:=R*2 K:=D*3,14 Ki: K Stop • Szimbólum: téglalap • Értékadás: változó := kifejezés pl: A:=3 • Műveleti jelek: összeadás: + kivonás: szorzás: * osztás: / Példák Start Start Start Be: Netto Be: A Be: R Brutto:=Netto*1,25 N:=A*A T:=R*R*3,14 Ki: Brutto Ki: N Ki: T Stop Stop Stop Elágazás (szelekció) • Szimbólum: rombusz • Belépés egy irány, kilépés két irány • Benne logikai kifejezés • balkif össz.oper. jobbkif Start Be: A,B I N A>B Ki: A Ki: B Stop • Összehasonlító operátorok: =,<>,<=,>= Feladatok •Számolja ki egy ‘A’ oldalú kocka térfogatát! •Döntsük el egy beolvasott számról, hogy pozitív, vagy negatív! •Olvassunk be két számot és a két szám összegét! Döntsük el, hogy helyes -e az összeg! •Olvassunk be két számot és írjuk ki a hányadosukat! •Olvassunk be két számot és egy műveleti jelet! Végezzük el a műveletet, írjuk ki az eredményt! Iteráció, ciklus Start Ismétlés kezdete A:=1 Ismételt utasítások Ki: A Ismétlés vége A:=A+1 Végtelen ciklus Iteráció, ciklus • Ciklus eleje • Ciklus vége • Ismételt utasítások • Teszt => => Ciklusfej Ciklusvég => => Ciklusmag Tesztkifejezés Iteráció, ciklus Start Ciklusfej A:=1 Ciklusmag Ki: A Hátul tesztelő ciklus A:=A+1 Ciklusvég n Tesztkifejezés A>10 i Stop Iteráció, ciklus Start Tesztkifejezés Stop Ciklusfej Ciklusmag A:=1 i A>10 n Ki: A A:=A+1 Ciklus -vég Elől tesztelő ciklus Iteráció, ciklus Start Elől tesztelő ciklus A:=1 A:=A+1 Ki: A A>10 n i Stop Feladatok •Írjuk ki az 1-10 közötti egész számokat. •Írjuk ki 20-tól 2 ig visszafelé haladva az összes páros számot! •Ismételjük egy szám beolvasását mindaddig, amíg az <=, mint 0. 0-nál nagyobb szám esetén fejezzük be a beolvasást, és írjuk ki a beolvasott szám négyzetét! Struktogram Struktogram • Az egész algoritmus egy téglalapba kerül • A további lépéseket a téglalapba ágyazott további téglalapok írják le • A lépések sorrendjét az egymás alatti téglalapok sorrendje adja meg. • Kis algoritmusok, algoritmus részletek ábrázolására alkalmas. • Használata, nehézkes, de jól ábrázolja az algoritmus egységét. Be: A Be: B Be: A B=0 C:=A/B Ki: C Struktogram Elemi lépés Logikai kif. i n Logikai kifejezés Teljes algoritmus Ciklusmag Ciklusmag Logikai kifejezés Elemei lépések, szekvenciák Elemei lépések, szekvenciák • Az elemi lépéseket beágyazott téglalapokban ábrázoljuk. • A szekvenciát a téglalapok sorrendje határozza meg. • A beolvasás, kiírás, értékadás elemi lépés. Elemi lépés Be: változó Ki: kifejezés Változó := kifejezés Elemi lépések, szekvencia Olvassuk be az apa és az anya keresetét, valamint a családtagok számát! Számoljuk ki az egy főre jutó átlagkeresetet! Be: ApaJov Be: AnyaJov Be: ApaJov, AnyaJov, Cstag Be: Cstag Atlag:=(ApaJov+AnyaJov)/ Cstag Atlag:=(ApaJov+AnyaJov)/ Cstag Ki:Atlag Ki:Atlag Szelekció Szelekció • A szelekciót két részre osztott téglalap ábrázolja • A felső részben a logikai kifejezés található • Az alsó rész további téglalapokra bomlik, és az igaz, hamis ágakat írja le. Logikai kif. n i Nem utasítások Igen utasítások A>=B i n Ki: A Ki: B Szelekció Olvassunk be egy fizetést és döntjük el eléri –e a minimálbér összegét. Be: Ber MinBer:=50000 Ber>=MinBer i Ki: „Eléri” n Ki:”Nem éri el” Iteráció, ciklus (ismétlés) Iteráció, ciklus a folyamatábrában Start Start A:=1 A:=1 Ki: A Stop i A>10 n A:=A+1 Ki: A n A>10 i Stop A:=A+1 Iteráció • A ciklust egy téglalap írja le • A téglalapot egy fektetett ‘L’ betűvel osztjuk ketté • A ‘L’ vízszintes szára a tesztkifejezést tartalmazza • Az így leválasztott téglalaprész a ciklusmag. • Megvalósítható az elől és a hátul tesztelő ciklus is. Teszt kifejezés Ciklusmag Ciklusmag Teszt kifejezés A ciklusok addig folytatódnak, amíg a tesztkifejezés értéke igaz! Ciklusok A:=1 A<=10 Ki: A A:=A+1 A:=1 Ki: A A:=A+1 A<=10 Feladatok •Olvassunk be egy számot, írjuk ki a reciprokát. •Egy beolvasott számról döntsük el, hogy van –e reciproka! •Olvassunk be három számot! Döntsük el, hogy lehetnek -e egy háromszög oldalai! •Írjuk ki az első 10 négyzetszámot! •Írjuk ki az első 10 páratlan szám köbét! •Olvassunk be számokat mindaddig, amíg a beolvasott szám nem 0. Határozzuk meg a számok összegét! •Legyen egy TITOK nevű változónk, amelyben a „kukucsi” szöveget tároljuk. Olvassuk be egy JELSZO nevű változó értékét. Ismételjük mindaddig a beolvasást, amíg a JELSZO változó más értéket tartalmaz, mint a TITOK! A mondatszerű leírás Mondatszerű leírás •Utasításként működő magyar szavakkal írja le az algoritmust. Algoritmus Be:A •Az algoritmus elemi lépésekből és Ismétlés összetett utasításokból áll. Be: B amíg B=0 •Az összetett utasítások blokkokat Ismétlés vége alkotnak, amelyek egymásba H:=A/B ágyazhatók. Ki: H •A blokkoknak jelöljük az elejét, Algoritmus vége végét. Mielőtt elkezdenénk • NAGY NYOMTATOTT betűk • dőlt kisbetűk • [szöveg szögletes zárójelben] • és anélkül • | jel • … CIKLUS AMÍG|KILÉPÉS log.kif [ciklus mag] CIKLUS VÉGE Algoritmus eleje, vége ALGORITMUS utasítások ALGORITMUS VÉGE Algoritmus Be:A Ismétlés Be: B amíg B=0 Ismétlés vége H:=A/B Ki: H Algoritmus vége Értékadás, beolvasás, kiírás változónév:=kifejezés BE: változó1 [,változó2…] KI: kif1 [,|; kif2…] Algoritmus Be: SZÁM N:=SZÁM*SZÁM Ki: N Algoritmus vége Feladatok • Olvassunk be két számot, számoljuk ki, hogy a második hány %-a az elsőnek! • Beolvasott bruttó összegből számoljuk ki a nettó árat és az ÁFA-t. • Olvassuk be egy autó fogyasztását, a használt benzin literenkénti árát és egy tervezett útvonal hosszát! Számoljuk ki mennyibe kerül az út! • Olvassunk be két számot és cseréljük meg őket! • Számoljuk ki a BMI-t! Mit csinál? ALGORITMUS Be: A, B SZAZALEK:=(B/A)*100 KI: SZAZALEK ALGORITMUS VÉGE Mit csinál? ALGORITMUS BE: NETTO BE: AFA AFA := AFA /100 BRUTTO := NETTO*(1 + AFA) KI: BRUTTO ALGORITMUS VÉGE Olvassuk be egy autó fogyasztását, a használt benzin literenkénti árát és egy tervezett útvonal hosszát! Számoljuk ki mennyibe kerül az út! Pl. 6,5l/100 km; 245 Ft; 1560 km ALGORITMUS BE:FOGYI, BENZAR, UT KM_FOGYI:=FOGYI/100 OSSZ_FOGYI:=KM_FOGYI * UT OSSZ_AR:= OSSZ_FOGYI * BENZAR KI:OSSZ_AR ALGORITMUS VEGE Olvassunk be két számot és cseréljük meg őket! ALGORITMUS BE: C:= A:= B:= A, B A B C ALGORITMUS VEGE Számoljuk ki a BMI-t. ALGORITMUS BE: TS, TM_M TMN:= TM_N * TM_N BMI:= TS/TMN Ki: BMI ALGORITMUS VEGE Elágazás ALGORITMUS BE: TS, TM_M TMN:= TM_N * TM_N BMI:= TS/TMN HA BMI <= 25 AKKOR KI: „MINDEN OK” KÜLÖNBEN KI: „VALAMI NINCS RENDBEN” HA VÉGE ALGORITMUS VEGE Elágazás HA logikai kifejezés AKKOR utasítások [ KÜLÖNBEN utasítások ] Algoritmus HA VÉGE Be: FIZ Algoritmus Ha akkor Be: FIZ<50000 FIZ SZOV:= akkor „Ez kevés!” Ha FIZ<50000 KI: „Ez kevés!” különben Ha vége SZOV:=„Ez se sok...!” Ki: AZ ADATOT” Ha „KÖSZÖNÖM vége Algoritmus vége Ki: SZOV Algoritmus vége Elágazás HA logikai kifejezés AKKOR utasítások Algoritmus Be: A, B Ha B=0 akkor B=1 Algoritmus Ki: A /B Be: FIZ Algoritmus végeHa FIZ<50000 AKKOR KI: „Ez kevés!” Ki: „KÖSZÖNÖM AZ ADATOT” Algoritmus vége Feladatok • Két szám közül írjuk ki a nagyobbat? • Számoljuk ki két szám hányadosát! • Számoljuk ki és értékeljük a beolvasott testmagasság és testsúly alapján a BMI-t! • Olvassunk be egy pont két koordinátáját! Írjuk ki melyik sík negyedben van a pont. II I X<0, Y>0 X>0, Y>0 III IV X<0, Y<0 X>0, Y<0 ALGORITMUS BE: A, B HA A<>B AKKOR HA A>B AKKOR KI: A, „A NAGYOBB” KÜLÖNBEN KI: B, „A NAGYOBB” HA VÉGE KÜLÖNBEN KI „A két szám egyenlő!” HA VÉGE ALGORITMUS VÉGE ALGORITMUS BE: A, B HA B<>0 AKKOR HANYADOS:= A/B KI: HANYADOS KÜLÖNBEN KI: „0-VAN NEM MEGY!” HA VÉGE ALGORITMUS VÉGE ALGORITMUS BE: TS, TM BMI:= TS/(TM*TM) HA BMI<=25 AKKOR AKKOR KI: „EGÉSZSÉG” KÜLÖNBEN HA BMI<=30 AKKOR KI: „FIGYELEM” KÜLÖNBEN HA BMI<=40 AKKOR KI: „BETEGSÉG” KÜLÖNBEN KI: NYOMÁS DOKIHOZ” HA VÉGE HA VÉGE HA VÉGE ALGORITMUS VEGE ALGORITMUS BE: X,Y HA X>0 AKKOR AKKOR HA Y>0 AKKOR KI: „I. SÍKNEGYED” KÜLÖNBEN KI: „IV. SÍKNEGYED” HA VÉGE KÜLÖNBEN HA Y>0 AKKOR KI: „II. SÍKNEGYED” KÜLÖNBEN KI: „III. SÍKNEGYED” HA VÉGE HA VÉGE ALGORITMUS VEGE Többszörös elágazás ALGORITMUS BE: ORSZAG HA ORSZAG=„MAGYAR” AKKOR KI: „BUDAPEST” HA ORSZAG=„OLASZ” AKKOR KI: „RÓMA” HA ORSZAG=„FRANCIA” AKKOR KI: „PÁRIZS” ... ALGORITMUS VEGE Többszörös elágazás ALGORITMUS BE: ORSZAG ELÁGAZÁS ORSZAG SZERINT ESET „MAGYAR” KI: „BUDAPEST” ESET „OLASZ” KI: „RÓMA” ESET „FRANCIA” KI: „PÁRIZS” ... ESET KÜLÖNBEN KI: „MI VAGY VÁGÓ ISTVÁN?” ELÁGAZÁS VÉGE ALGORITMUS VEGE Többszörös elágazás ELÁGAZÁS kifejezés SZERINT ESET konstans 1 Be:A,B,MUV utasítások Elágazás MUV szerint [ESET konstans 2 Eset „+” utasítások c:=a+b: Ki:c ….] Eset „-” [ESET KÜLÖNBEN c:=a-b: Ki:c utasítások] Eset „*” ELÁGAZÁS VÉGE c:=a*b: Ki: c Eset „/” c:=a/b: Ki c Eset különben Ki: „Ismeretlen…” Elágazás vége Olvassunk be egy 1 és 10 közötti egész számot és írjuk ki római számmal! ALGORITMUS BE:SZAM ELÁGAZÁS SZÁM SZERINT ESET 1 RSZ:=„I” ESET 2 RSZ:=„II” … ESET 9 RSZ:=„IX” ESET 10 RSZ:=„X” ESET KÜLÖNBEN RSZ:=„NEM ISMEREM” ELÁGAZÁS VÉGE KI: RSZ ALGORITMUS VÉGE Elől tesztelő ciklus ALGORITMUS I:=1 CIKLUS AMÍG I<=10 KI: I CIKLUS VÉGE ALGORITMUS VÉGE ALGORITMUS I:=1 CIKLUS KILÉPÉS I>10 KI: I CIKLUS VÉGE ALGORITMUS VÉGE Elől tesztelő ciklus CIKLUS AMÍG|KILÉPÉS log.kif ciklus mag CIKLUS VÉGE Be:A Ciklus amíg A>=2 A:=A-2 Ciklus vége Ha A>0 akkor Ki: „xxxx” Különben Ki: „yyyy” Ha vége Hátul tesztelő ciklus CIKLUS ciklus mag AMÍG|KILÉPÉS log.kif CIKLUS VÉGE Be:A Ciklus Be: B Amíg B=0 Ciklus vége C:=A/B Ki: C Feladatok • Olvassunk be a felhasználótól egy jelszót. Mindaddig folytassuk a beolvasást, míg az „abrakadabra” szót be nem írja! • Olvassunk be két számot, döntsük el, hogy a második osztója -e az elsőnek! • Döntsük el egy számról, hogy egész szám -e! • Számoljuk ki két szám legkisebb közös többszörösét! ALGORITMUS BE: A, B CIKLUS AMIG A>0 A:=A-B CIKLUS VÉGE ALGORITMUS HA A=0 AKKOR BE: A, B KI:HA B,” OSZTÁJA A , ”-NAK” A<0 AKKOR„,A:=A*-1 KÜLÖNBEN HA B<0 AKKOR B:=B*-1 KI:HA B,” NEMAKKOR OSZTÁJA „, A , ”-NAK” B<>0 HA VÉGE CIKLUS AMIG A>0 ALGORITMUS VÉGE A:=A-B CIKLUS VÉGE HA A=0 AKKOR KI: B,” OSZTÁJA „, A , ”-NAK” KÜLÖNBEN KI: B,” NEM OSZTÁJA „, A , ”-NAK” HA VÉGE KÜLÖNBEN KI: „0-VAL NEM OSZTUNK!” HA VÉGE ALGORITMUS VÉGE ALGORITMUS CIKLUS BE: JELSZO KILÉPÉS JELSZÓ=„ABRAKADABRA” CIKLUS VÉGE KI: „BELÉPÉS SIKERES” ALGORITMUS VÉGE ALGORITMUS BE: A, B AT := A BT := B CIKLUS AMIG AT<>BT HA AT<BT AKKOR AT:=AT+A KÜLÖNBEN BT:=BT+B HA VÉGE CIKLUS VÉGE KI: „A legkisebb közös többszörös: „ , AT ALGORITMUS VÉGE Ciklus másképpen ALGORITMUS I:=1 VEGERT:=10 CIKLUS KILÉPÉS I>VEGERT I:=I+1 CIKLUS VÉGE ALGORITMUS VÉGE Számláló ciklus ALGORITMUS CIKLUS I:=1-TŐL 10-IG ... CIKLUS VÉGE ALGORITMUS VÉGE Számláló ciklus CIKLUS cvált:=kezd-TŐL vég-IG [lépésköz LÉPÉSENKÉNT] ciklusmag CIKLUS VÉGE Ciklus I:=1-től 10-ig Ki: I * I Ciklus vége Ciklus I:=1-től 10-ig Ki: I, „. négyzetszám”, I*I Ciklus vége És most… Feladatok • Írjuk ki az 1-től 50-ig terjedő egész számokat! • Írjuk ki az első tíz négyzetszámot! • Írjuk ki 0-20 között az összes páros számot! • Mit csinál? OS:=0 Ciklus I:=1 -től 20-ig Be:A OS:=OS+A Ciklus vége B:=OS/20 Ki: B Adattípusok Adattípusok 1,2,3... A ? Abrakadabra Értékkészlet Igaz / Hamis Szorzás A ? Gyökvonás Elvégezhető műveletek Összevonás 1 0 0 1 0 1 1 1 Helyfoglalás H e l l o Adattípusok Egyszerű Numerikus Karakter Egész Valós Összetett Logikai Tömb Szöveg Rekord Numerikus • Egész – Előjeles ill. előjel nélküli egész számok • Valós – Tört értékkel rendelkező számok A:=123 B:=3.14 Karakter • Olyan változó amelynek értékkészletébe tetszőleges karakterek tartoznak • A változóban egyszerre csak egy karakter tárolódhat BETU:=„A” JEL:=„+” Logikai • Logikai értékek tárolására alkalmas típus A:=11 B:=20 LOG:=A<B A:=11 B:=20 LOG:=A=B HA LOG AKKOR KI:”IGAZ VOLT” KÜLÖNBEN KI:”HAMIS VOLT” HA VÉGE HA LOG AKKOR KI:”IGAZ VOLT” KÜLÖNBEN KI:”HAMIS VOLT” HA VÉGE A tömb típus 123 32 A B C:=A+B 155 C Összetett típusok Tömb típus 34 12 1 2 21 48 3 4 55 5 A C:=A(1)+A(2) 56 C Tömb típus 34 1 12 21 2 48 3 4 A Ciklus I:=1-től 5-ig Ki: A(I) Ciklus vége 55 5 A tömbök jellemzői • Egy tömb változónak több eleme lehet • Az elemekre az indexükkel lehet hivatkozni • Egy tömb minden eleme azonos típusú kell legyen Feladatok • Olvassuk be az A(10) tömb elemeinek értékét! • Olvassuk be a felhasználótól az A(10) tömb egy elemének indexét, majd írjuk ki a tömbelem értékét! • Írjuk ki az A(10) tömb elemeinek összegét! • Olvassuk be az A(10) tömb két elemének indexét! Cseréljük meg a két elem értékét! Szöveg M U 1 2 N K 3 4 A KI: A(1) KI: A(5) A 5 Szöveg • Olyan tömb, amelynek elemei karakterek Feladatok • Írjuk ki egy szöveg összes betűjét! • Írjuk ki egy szöveg mássalhangzóit! • Írjunk egy szöveg páratlan betűit! • Írjunk ki egy szöveget fordítva! Rekord adattípus Varga Gábor Név Angol Szak 3 Évfolyam Hallgató Ki: Hallgató.Név Férfi Neme 4,5 Átlag A rekord adattípus • Egy rekord típusú változónak több eleme/mezője lehet • A mezőkre a mezőnevekkel hivatkozhatunk rekordnév.mezőnév • Az egyes mezők eltérő típusúak lehetnek Adatszerkezetek Adatszerkezetek Verem Sor Lista Verem 0 11 54 21 123 Verem 0 11 54 21 123 Verem 11 54 21 123 Verem 54 21 123 Verem 21 123 Verem 123 Verem LIFO 32 123 A verem adatszerkezet • Több adat tárolására alkalmas adatszerkezet. • A verembe be lehet tenni adatokat, és ki lehet emelni onnan őket. • Először mindig az utoljára berakott adat vehető ki. (LIFO) • Megvalósításához általában tömböt használnak. Sor 123 Sor 13 123 Sor 29 13 123 Sor 81 29 13 123 Sor 23 81 29 13 123 Sor 23 81 29 13 123 Sor 23 81 29 13 FIFO Programozási tételek Elemi algoritmusok Start Be: A N:=A*A Ki: N Stop Programozási tételek • Sorozatból egy adat • Sorozatból egy sorozat • Sorozattokból egy sorozat • Sorozatból sorozatok Sorozatból egy adat Összegzés tétele Tevékenység Bemenet Eredmény Kiszámolja egy tömb elemeinek összegét A( ), numerikus tömb N az elemek száma Az elemek összege Algoritmus S:=0 Ciklus i:=1-től N-ig S:=S+A(I) Ciklus vége Ki:S Algoritmus vége Feladatok • A HET( ) 7 HET elemű 1 2 3 4 5 6 7 tömbben egy 14 12 13,8 15,2 13 19,4 13,3 bolt egy bolt egy héten keresztül Algoritmus regisztrált BEVET:=0 Ciklus i:=1-től 7-ig napi BEVET:=BEVET+HET(i) bevételeit Ciklus vége tároljuk. Ki:BEVET Mennyi volt a heti bevétel? Algoritmus vége Eldöntés tétele Tevékenység Bemenet Eredmény Eldönti, hogy egy tömbben megtalálható –e egy bizonyos adat A( ) tömb N az elemek száma T a keresett adat Logikai: Igen, Nem Eldöntés tétele Algoritmus I:=1 Ciklus amíg I<=N és A(I)<>T I:=I+1 Ciklus vége VAN:=I<=N Ki: VAN Algoritmus vége LOVES Az LOVES(7) tömb egy lövész 7 lövésének pontértékét tartalmazza. Döntsük el, hogy volt e telitalálat! 1 2 3 4 5 6 7 7 8 10 9 10 7 2 Algoritmus T:=10 N:=7 I:=1 Ciklus amíg I<=N és LOVES(I)<>T I:=I+1 Ciklus vége VAN:=I<=N Ki: VAN Algoritmus vége LOVES Az LOVES(7) tömb egy lövész 7 lövésének pontértékét tartalmazza. Döntsük el, hogy volt e telitalálat! 1 2 3 4 5 6 7 7 6 8 9 7 7 2 Algoritmus T:=10 N:=7 I:=1 Ciklus amíg LOVES(I)<>T és I<=N I:=I+1 Ciklus vége VAN:=I<=N Ki: VAN Algoritmus vége Kiválasztás tétele Tevékenység Bemenet Eredmény Megadja, hogy T adatot biztosan tartalmazó egy többen a T hányadik elemben fordul elő először. A( ) tömb, amely tartalmaz legalább egy T adatot N az elemek száma T a keresett adat Az első, T adatot tartalmazó elem indexe Kiválasztás tétele Algoritmus I:=1 Ciklus amíg A(I) <>T I:=I+1 Ciklus vége Ki: I Algoritmus vége Megszámlálás tétele Tevékenység Bemenet Eredmény Megszámolja, hogy egy tömbben hány T tulajdonságú elem van A( ), numerikus tömb N az elemek száma, T tulajdonság A T tulajdonságú elemek száma Algoritmus TSZ:=0 Ciklus I:=1-től N-ig Ha A(I)=T akkor TSZ:=TSZ+1 HA vége Ciklus vége Ki: TSZ Algoritmus vége Megszámlálás Adott az A(N) sorozat. Adjuk meg a T tulajdonságú elemek számát! Algoritmus TSZ:=0 Ciklus I:=1-től N-ig Ha A(I)=T akkor TSZ:=TSZ+1 HA vége Ciklus vége Ki: TSZ Algoritmus vége Feladat Adott a BMI(100) tömb, amely 100 ember BMI-jét tartalmazza. Számoljuk meg a beteg embereket! (BMI>=40) Algoritmus TSZ:=0: T=40 Ciklus I:=1-től N-ig Ha BMI(I)>=T akkor TSZ:=TSZ+1 HA vége Ciklus vége Ki: TSZ Algoritmus vége Minimum, minimum kiválasztás Tevékenység Visszaadja egy tömb legkisebb, vagy legnagyobb értékét Bemenet A( ), numerikus tömb N az elemek száma Eredmény A T tulajdonságú elemek száma Algoritmus MAX:=A(1) Ciklus I:=2-től N-ig Ha A(I)>MAX akkor MAX:=A(I) HA vége Ciklus vége Ki: MAX Algoritmus vége Feladat Adott a BMI(100) tömb, amely 100 ember BMI-jét tartalmazza. Válasszuk ki a legjobb BMI értéket! Algoritmus MIN:=BMI(1): N=100 Ciklus I:=2-től N-ig Ha BMI(I)< MIN akkor MIN:BMI(I) HA vége Ciklus vége Ki: MIN Algoritmus vége Feladat JAN A JAN( ), 31 elemű tömb 2002 január hava egyes napjainak neveit tartalmazza. Hányadikán volt először péntek? 1 2 3 4 5 6 7 K Sz Cs P Szo V H Algoritmus N:=31 T:=„P” I:=1 Ciklus amíg JAN(I) <>T I:=I+1 Ciklus vége Ki: I Algoritmus vége Keresés tételei Tevékenység Eldönti, hogy egy tömbben megtalálható -e egy bizonyos adat, és ha igen hányadik elemben Bemenet A( ) tömb, amely N az elemek száma T a keresett adat Eredmény Logikai Nem, vagy a T adatot tartalmazó elem indexe Lineáris keresés Algoritmus I:=1 Ciklus amíg I<=N és A(I)<>T I:=I+1 Ciklus vége VAN:=I<=N Ha VAN akkor Ki:I Különben Ki: HAMIS Ha vége Algoritmus vége A tömb a T tulajdonság szempontjából rendezetlen! Feladat Rendelkezünk a TAN( ) 20 elemű tömbbel, amelyben egy osztály tanulóinak nevei vannak felsorolva. Van –e az osztályban, és ha igen hányadik tömbelemben szerepel Gacsaj Pesta? 1 Tóth Piroska 2 Varga Anna 3 Tarjáni Áron 4 Kollár Ede 5 Gál Zoltán 6 Tabai Judit 7 Kávás Géza … 20 Gacsaj Pesta Algoritmus I:=1: N:=20 : T:="Gacsaj Pesta" Ciklus amíg I<=N és TAN(I)<>T I:=I+1 Ciklus vége VAN:=I<=N Ha VAN akkor Ki:I Különben Ki: HAMIS Ha vége Algoritmus vége Feladat Rendelkezünk a TAN( ) 20 elemű tömbbel, amelyben egy osztály tanulóinak nevei vannak felsorolva. Van –e az osztályban, és ha igen hányadik tömbelemben szerepel Gacsaj Pesta? 1 Tóth Piroska 2 Varga Anna 3 Tarjáni Áron 4 Kollár Ede 5 Gál Zoltán 6 Tabai Judit 7 Kávás Géza … 20 Zima Van Algoritmus I:=1: N:=20 : T:="Gacsaj Pesta" Ciklus amíg és I<=N és TAN(I)<>T I:=I+1 Ciklus vége VAN:=I<=N Ha VAN akkor Ki:I Különben Ki: HAMIS Ha vége Algoritmus vége Strázsás lineáris keresés Algoritmus I:=1 Ciklus amíg I<=N és A(I)<>T I:=I+I Ciklus vége VAN:=I<=N Ha VAN akkor SORSZ:=I Ki:I Különben Ki: HAMIS Ha vége Algoritmus vége Algoritmus I:=1: A(N+1):=T Ciklus amíg A(I)<>T I:=I+I Ciklus vége VAN:=I<=N Ha VAN akkor SORSZ:=I Ki:I Különben Ki: HAMIS Ha vége Algoritmus vége Logaritmikus keresés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 28 ??? Lineáris keresés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 10 lépés 28 ??? Logaritmikus keresés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 28 ??? 1. lépés Logaritmikus keresés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 28 ??? 2. lépés Logaritmikus keresés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 28 ??? 3. lépés Logaritmikus keresés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 28 ??? 4. lépés A logaritmikus keresés • Csak rendezett sorozatokban használható. • Igen gyorsan keres! • N elem esetén max LOG2 N+1 lépésben találja meg a keresett elemet. => 2lépés=N Pl. 128 elem esetén 8 lépés 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 1 2 3 4 5 6 7 8 9 10 11 1 3 5 6 11 13 16 19 21 28 32 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 A F 1 2 3 4 5 6 7 8 9 10 11 1 3 5 6 11 13 16 19 21 28 32 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 A K 5 6 F 1 2 3 4 7 8 9 10 11 1 3 5 6 11 13 16 19 21 28 32 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 5 K A 6 7 F 1 2 3 4 8 9 10 11 1 3 5 6 11 13 16 19 21 28 32 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 A 5 6 7 K 8 F 1 2 3 4 9 10 11 1 3 5 6 11 13 16 19 21 28 32 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 K 5 6 7 8 A F 1 2 3 4 9 10 11 1 3 5 6 11 13 16 19 21 28 32 1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32 K A 5 6 7 8 F 1 2 3 4 9 10 11 1 3 5 6 11 13 16 19 21 28 32 Logaritmikus keresés Algoritmus A:=1: F:=N Ciklus Csak a T K:=Egész((A+F)/2) tulajdonság Ha A(K)<T akkor A:=K+1 Ha A(K)>T akkor F:=K-1 szempontjából amíg A<=F és A(K)<>T rendezett Ciklus vége tömbben VAN:=A<=F működik! Ha VAN akkor Ki:K különben Ki: "Nincs ilyen elem" Ha vége Algoritmus vége Feladat Hányadik lépésben találjuk meg a T tulajdonságú elemet? T 0 8 K A F 1 8 4 15 1 3 2 A(K) 8 1 2 3 4 5 6 7 8 2 8 12 15 24 31 32 55 Algoritmus A:=1: F:=N Ciklus K:=Egész((A+F)/2) Ha A(K)<T akkor A:=K+1 Ha A(K)>T akkor F:=K-1 amíg A<=F és A(K)< >T Ciklus vége VAN:=A<=F Ha VAN akkor Ki:K különben Ki: "Nincs ilyen elem" Ha vége Algoritmus vége T 0 12 K A(K) A F 1 8 4 15 1 3 2 3 8 3 12 3 1 2 3 4 5 6 7 8 2 8 12 15 24 31 32 55 Algoritmus A:=1: F:=N Ciklus K:=Egész((A+F)/2) Ha A(K)<T akkor A:=K+1 Ha A(K)>T akkor F:=K-1 amíg A<=F és A(K)< >T Ciklus vége VAN:=A<=F Ha VAN akkor Ki:K különben Ki: "Nincs ilyen elem" Ha vége Algoritmus vége T 0 56 K A(K) A F 1 8 4 15 5 8 6 31 7 8 7 32 8 8 8 55 9 8 1 2 3 4 5 6 7 8 2 8 12 15 24 31 32 55 Algoritmus A:=1: F:=N Ciklus K:=Egész((A+F)/2) Ha A(K)<T akkor A:=K+1 Ha A(K)>T akkor F:=K-1 amíg A<=F és A(K)< >T Ciklus vége VAN:=A<=F Ha VAN akkor Ki:K különben Ki: "Nincs ilyen elem" Ha vége Algoritmus vége Sorozatból sorozat A kiválogatás tétele Adott az A(N) tömb, amely adatokat tartalmaz és a B() tömb, amely üres. Helyezzük el a B() tömbben az A(N) T tulajdonságú elemeinek indexét. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 6 5 6 11 4 16 6 21 28 5 6 21 43 6 T=6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A kiválogatás tétele Adott az A(N) tömb, amely adatokat tartalmaz és a B() tömb, amely üres. Helyezzük el a B() tömbben az A(N) T tulajdonságú elemeinek indexét. 1 2 3 4 1 6 5 6 11 4 16 6 21 28 5 1 2 3 4 2 5 5 6 6 7 7 8 8 9 10 11 12 13 14 15 6 21 43 6 9 10 11 12 13 14 15 A kiválogatás tétele Adott az A(N) tömb, amely adatokat tartalmaz és a B() tömb, amely üres. Helyezzük el a B() tömbben az A(N) T tulajdonságú elemeinek indexét. 1 2 3 4 5 1 6 5 6 11 4 16 6 21 28 5 1 2 3 4 2 4 5 6 6 7 7 8 8 9 10 11 12 13 14 15 6 21 43 6 9 10 11 12 13 14 15 A kiválogatás tétele Adott az A(N) tömb, amely adatokat tartalmaz és a B() tömb, amely üres. Helyezzük el a B() tömbben az A(N) T tulajdonságú elemeinek indexét. 1 2 3 4 5 1 6 5 6 11 4 16 6 21 28 5 1 2 3 4 2 4 8 5 6 6 7 7 8 8 9 10 11 12 13 14 15 6 21 43 6 9 10 11 12 13 14 15 A kiválogatás tétele Adott az A(N) tömb, amely adatokat tartalmaz és a B() tömb, amely üres. Helyezzük el a B() tömbben az A(N) T tulajdonságú elemeinek indexét. 1 2 3 4 5 1 6 5 6 11 4 16 6 21 28 5 1 2 3 4 2 4 8 12 5 6 6 7 7 8 8 9 10 11 12 13 14 15 6 21 43 6 9 10 11 12 13 14 15 A kiválogatás tétele Adott az A(N) tömb, amely adatokat tartalmaz és a B() tömb, amely üres. Helyezzük el a B() tömbben az A(N) T tulajdonságú elemeinek indexét. 1 2 3 4 5 1 6 5 6 11 4 16 6 21 28 5 1 2 3 4 2 4 8 12 15 5 6 6 7 7 8 8 9 10 11 12 13 14 15 6 21 43 6 9 10 11 12 13 14 15 A kiválogatás tétele I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 6 5 6 11 4 16 6 21 28 5 2 3 4 6 21 43 6 J=0 1 5 6 7 8 9 10 11 12 13 14 15 A kiválogatás tétele I 1 2 3 4 1 6 5 6 11 4 16 6 21 28 5 J:=J+1 1 2 2 5 6 7 8 9 10 11 12 13 14 15 6 21 43 6 B(J):=I 3 4 5 6 7 8 9 10 11 12 13 14 15 A kiválogatás tétele I 1 2 3 4 1 6 5 6 11 4 16 6 21 28 5 J:=J+1 1 2 2 4 5 6 7 8 9 10 11 12 13 14 15 6 21 43 6 B(J):=I 3 4 5 6 7 8 9 10 11 12 13 14 15 Kiválogatás tétele Algoritmus J:=0 Ciklus I:=1-től N-ig Ha A(I)=T akkor J:=J+1 B(J):=I Ha vége Ciklus vége Algoritmus vége A kiválogatás tétele Okés!!! Értem, csak haggyááá máááá!!! Feladat • Az A() tömbben adottak egy harmincegy napos hónap napi legnagyobb kén-dioxid szintjei. A határérték 0.023%. Helyezzük a B() tömbbe azoknak a napoknak a számát, amikor a SO2 érték meghaladta a határértéket! Algoritmus T:=0.023 J:=0 Ciklus I:=1-től N-ig Ha A(I)>T akkor J:=J+1 B(J):=I Ha vége Ciklus vége Algoritmus vége Rendezési algoritmusok 1 2 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 1 2 3 4 5 6 7 8 1 2 3 5 6 7 8 9 11 13 32 9 10 11 Rendezés közvetlen kiválasztással I 1 N-1 2 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 Rendezés közvetlen kiválasztással J:=I+1 1 2 N 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 Rendezés közvetlen kiválasztással I J 1 2 3 4 5 6 7 8 3 11 2 6 1 5 8 7 13 9 32 A(J)<A(I) 9 10 11 Rendezés közvetlen kiválasztással I 1 J 2 3 4 5 6 7 8 2 3 11 3 2 6 1 5 8 7 13 9 32 C:=A(I) C A(I):=A(J) 3 A(J):=C A(J)<A(I) 9 10 11 Rendezés közvetlen kiválasztással I 1 J 2 3 4 5 6 7 8 9 10 11 2 11 3 6 1 5 8 7 13 9 32 Rendezés közvetlen kiválasztással I 1 J 2 3 4 5 6 7 8 9 10 11 1 2 11 3 6 1 2 5 8 7 13 9 32 C:=A(I) C A(I):=A(J) 2 A(J):=C A(J)<A(I) Rendezés közvetlen kiválasztással I 1 J 2 3 4 5 6 7 8 9 10 11 1 2 11 3 6 1 2 5 8 7 13 9 32 Rendezés közvetlen kiválasztással I 1 N-1 2 3 4 5 6 7 8 9 10 11 1 11 3 6 2 5 8 7 13 9 32 Rendezés közvetlen kiválasztással I 1 2 3 4 5 6 7 8 9 10 11 1 11 3 6 2 5 8 7 13 9 32 Rendezés közvetlen kiválasztással I J:=I+1 N 1 2 3 4 5 6 7 8 9 10 11 1 11 3 6 2 5 8 7 13 9 32 Rendezés közvetlen kiválasztással I J 2 3 4 5 6 7 8 3 11 1 11 3 6 2 5 8 7 13 9 32 1 9 10 11 C:=A(I) C A(I):=A(J) 11 A(J):=C A(J)<A(I) Rendezés közvetlen kiválasztással I J 1 2 3 4 5 6 7 8 1 3 11 6 2 5 8 7 13 9 32 A(J)<A(I) 9 10 11 Rendezés közvetlen kiválasztással I J 1 2 3 4 5 6 7 8 9 10 11 1 2 3 11 6 2 3 5 8 7 13 9 32 C:=A(I) C A(I):=A(J) 3 A(J):=C A(J)<A(I) Rendezés közvetlen kiválasztással I J N 1 2 3 4 5 6 7 8 9 10 11 1 2 11 6 3 5 8 7 13 9 32 Rendezés közvetlen kiválasztással Algoritmus Ciklus I:=1-től N-1-ig Ciklus J:=I+1-től N-ig Ha A(J)<A(I) akkor C:=A(I) A(I):=A(J) A(J):=C Ha vége Ciklus vége Ciklus vége Algoritmus vége A rendezés egy menete. Feladat Töltsük ki a következő ábrát a közvetlen kiválasztás egyes meneteinek megfelelő állapotokkal! 1 I J A(i) A(j) 0 1 2 3 4 5 6 7 2 3 4 5 6 7 8 3 11 2 6 1 5 8 7 Buborék rendezés Buborék rendezés I 1 2 N 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 13 9 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 8 7 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 6 1 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 1 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 2 1 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 1 2 J 3 4 5 6 7 8 9 10 11 3 11 1 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 2 3 4 5 6 7 8 9 10 11 3 11 1 2 6 5 7 8 9 13 32 1 A(J)<A(J-1) Buborék rendezés I J 1 2 3 4 5 6 7 8 9 10 11 3 1 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 1 2 3 4 5 6 7 8 9 10 11 3 1 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 1 2 3 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 6 5 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 3 J 1 2 4 5 6 7 8 9 10 11 1 3 11 2 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 3 1 2 4 5 6 7 8 9 10 11 1 3 11 2 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 4 1 2 3 5 6 7 8 9 10 11 1 3 2 11 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 1 2 3 4 5 6 7 8 9 10 11 1 3 2 11 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 1 2 3 4 5 6 7 8 9 10 11 1 2 3 11 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I J 1 2 3 4 5 6 7 8 9 10 11 1 2 3 11 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés I 4 J 1 2 3 5 6 7 8 9 10 11 1 2 3 11 5 6 7 8 9 13 32 A(J)<A(J-1) Buborék rendezés Algoritmus Ciklus I:=2-től N-ig Ciklus J:=N-től I-ig -1 Lépésenként Ha A(J)<A(J-1) akkor C:=A(J) A(J):=A(J-1) A(J-1):=C Ha vége Ciklus vége Ciklus vége Algoritmus vége 1 2 3 4 5 6 7 8 9 10 11 3 6 8 11 15 16 21 22 1 33 45 Algoritmus Ciklus I:=2-től N-ig Ciklus J:=N-től I-ig -1 Lépésenként Ha A(J)<A(J-1) akkor C:=A(J) A(J):=A(J-1) A(J-1):=C Ha vége Ciklus vége Ciklus vége Algoritmus vége Módosított buborék rendezés Módosított buborék rendezés 1 2 3 4 5 6 7 8 9 10 11 2 3 5 6 7 8 9 11 13 32 1 Algoritmus Ciklus I:=2-től N-ig Ciklus J:=N-től I-ig -1 Lépésenként Ha A(J)<A(J-1) akkor C:=A(J) A(J):=A(J-1) A(J-1):=C Ha vége Ciklus vége Ciklus vége Algoritmus vége Algoritmus CSERE:=IGAZ: I:=2 Ciklus amíg I<=N és CSERE:=IGAZ CSERE:=HAMIS Ciklus J:=N-től I-ig -1 Lépésenként Ha A(J)<A(J-1) akkor C:=A(J) A(J):=A(J-1) A(J-1):=C CSERE:=IGAZ Ha vége Ciklus vége I:=I+1 Ciklus vége Algoritmus vége Feladat Töltsük ki a következő ábrát a buborék rendezés egyes meneteinek megfelelő állapotokkal! 1 I J A(i) A(j) 0 1 2 3 4 5 6 7 2 3 4 5 6 7 8 3 11 2 6 1 5 8 7 Több sorozatból egy sorozat Metszetképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban és B()-ben is megtalálhatók Metszetképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban és B()-ben is megtalálhatók Metszetképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban és B()-ben is megtalálhatók Metszetképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban és B()-ben is megtalálhatók Metszetképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban és B()-ben is megtalálhatók Metszetképzés tétele I I N 1 2 3 4 5 6 7 8 9 10 11 12 1 6 5 7 11 4 42 0 21 28 53 31 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 A(N) CN :=0 C( ) J 6 11 45 8 4 53 42 43 1 28 31 7 B(M) Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 CN:=CN+1 1 2 3 5 6 7 8 9 10 11 12 A(N) C(CN):=A(I) 4 5 6 7 8 9 10 11 12 1 C( ) J 1 2 3 4 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 B(M) Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 CN:=CN+1 1 2 1 6 3 5 6 7 8 9 10 11 12 A(N) C(CN):=A(I) 4 5 6 7 8 9 10 11 12 C( ) J 1 2 3 4 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 B(M) Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 1 2 3 4 5 6 7 8 9 10 11 12 1 6 1 2 3 4 5 6 7 8 9 10 11 12 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 1 2 3 4 5 6 7 8 9 10 11 12 1 6 1 2 3 4 5 6 7 8 9 10 11 12 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 CN:=CN+1 1 2 3 1 6 7 5 6 7 8 9 10 11 12 A(N) C(CN):=A(I) 4 5 6 7 8 9 10 11 12 C( ) J 1 2 3 4 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 B(M) Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 1 2 3 4 5 6 7 8 9 10 11 12 1 6 1 2 3 4 5 6 7 8 9 10 11 12 6 11 45 8 4 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 Metszetképzés tétele I 1 2 3 4 1 6 5 7 11 4 42 0 21 28 53 31 CN:=CN+1 5 6 7 8 9 10 11 12 A(N) C(CN):=A(I) 1 2 3 4 1 6 7 11 5 6 7 8 9 10 11 12 C( ) J 1 2 3 4 6 11 45 8 5 6 7 8 9 10 11 12 4 53 42 43 1 28 31 7 B(M) Metszetképzés tétele Algoritmus CN:=0 Ciklus I:=1-től N-ig J:=1 Ciklus amíg J<=M és A(I)<>B(J) J:=J+1 Ciklus vége Ha J<=M, akkor CN:=CN+1 C(CN):=A(I) Ha vége Ciklus vége Algoritmus vége Unióképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben megtalálhatók! Unióképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben megtalálhatók! Unióképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben megtalálhatók! Unióképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben megtalálhatók! Unióképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben megtalálhatók! Unióképzés tétele Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben megtalálhatók! Unióképzés tétele 1 2 3 4 5 6 1 6 5 10 11 4 1 2 3 4 5 1 2 3 4 5 6 12 4 8 4 6 A(N) 7 8 9 10 11 12 C() B(M) Unióképzés tétele CN:=N J:=1 1 2 3 4 1 6 5 10 11 4 1 2 3 1 6 5 10 11 4 1 2 3 4 5 6 12 4 8 4 4 5 5 6 6 A(N) 7 8 9 10 11 12 C B(M) Unióképzés tétele 1 2 3 4 5 6 1 6 5 10 11 4 A(N) CN:=CN+1: C(CN):=B(J) J:=J+1 1 2 3 4 5 6 7 1 6 5 10 11 4 12 1 2 3 4 5 6 12 4 8 4 8 9 10 11 12 C B(M) Unióképzés tétele 1 2 3 4 5 6 1 6 5 10 11 4 A(N) CN:=CN+1: C(CN):=B(J) J:=J+1 1 2 3 4 5 6 7 1 6 5 10 11 4 12 1 2 3 4 5 6 12 4 8 4 8 9 10 11 12 C B(M) Unióképzés tétele 1 2 3 4 5 6 1 6 5 10 11 4 A(N) CN:=CN+1: C(CN):=B(J) J:=J+1 1 2 3 4 5 6 7 8 1 6 5 10 11 4 12 8 1 2 3 4 5 6 12 4 8 4 9 10 11 12 C B(M) Unióképzés tétele 1 2 3 4 5 6 1 6 5 10 11 4 A(N) CN:=CN+1: C(CN):=B(J) J:=J+1 1 2 3 4 5 6 7 8 1 6 5 10 11 4 12 8 1 2 3 4 5 6 12 4 8 4 9 10 11 12 C B(M) Unióképzés tétele Algoritmus Ciklus I:=1-től N-ig C(I)=A(I) Ciklus vége CN:=N Ciklus J:=1-től M-ig I:=1 Ciklus amíg I<=N és A(I)<>B(J) I:=I+1 Ciklus vége Ha I>N akkor CN:=CN+1: C(CN):=B(J) Ha vége Ciklus vége Algoritmus vége