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



Hasonló dokumentumok
Informatikai tehetséggondozás:

Programozási tételek. Jegyzet. Összeállította: Faludi Anita 2012.

Egyszerű programozási tételek

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Informatikai tehetséggondozás:

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

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

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

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

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.

Adatstruktúrák Algoritmusok Objektumok

INFORMATIKAI ALAPISMERETEK

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Szeminárium-Rekurziók

23. Fa adatszerkezetek, piros-fekete fa adatszerkezet (forgatások, új elem felvétele, törlés)(shagreen)

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

ADATBÁZISKEZELÉS ADATBÁZIS

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

2015, Diszkrét matematika

Számítástudomány matematikai alapjai segédlet táv és levelező

2. Halmazelmélet (megoldások)

hatására hátra lép x egységgel a toll

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

Gyakorló feladatok ZH-ra

p j p l = m ( p j ) 1

PROGRAMOZÁSI TÉTELEK

AAO 3. Csink László 2007

Elemi matematika szakkör

Halmaz típus Értékhalmaz:

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

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

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

Informatikai tehetséggondozás:

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Tartalom. Descartes-koordináták. Geometriai értelmezés. Pont. Egyenes. Klár Gergely 2010/2011. tavaszi félév

Másolásra épülő algoritmusok

Statisztika I. 6. előadás. Előadó: Dr. Ertsey Imre

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

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória





Lineáris programozás. Modellalkotás Grafikus megoldás Feladattípusok Szimplex módszer

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

A 2011/2012 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Számítógép Architektúrák

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

C# feladatok gyűjteménye

Multihalmaz, intervallumhalmaz

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

Informatikai tehetséggondozás:

Eszterházy Károly Főiskola Matematikai és Informatikai Intézet. Adatszerkezetek és algoritmusok. Geda Gábor

Informatikai tehetséggondozás:

Holtumsweg 13, D Weeze, Tel /9134-0, Fax /

Programozási alapismeretek 11. előadás

ÉS TESZTEK A DEFINITSÉG

3. Strukturált programok

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

100% BIO Natur/Bio kozmetikumok és testápolás

Halmazelmélet. Halmazok megadása

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

Programozási segédlet

22. szakkör (Csoportelméleti alapfogalmak 1.)

MATEMATIKA ÍRÁSBELI ÉRETTSÉGI-FELVÉTELI FELADATOK május 19. du. JAVÍTÁSI ÚTMUTATÓ

Adatszerkezetek II. 6. előadás

1. Számoljuk meg egy számokat tartalmazó mátrixban a nulla elemeket!

148 feladat ) + ( > ) ( ) =?

Leggyakrabban használt adatbányászási technikák. Vezetői információs rendszerek

Paraméteres-, összesítı- és módosító lekérdezések

Informatikai tehetséggondozás:

Vállalkozásgazdaságtan. B e v e z e t é s. Cél: Termelési folyamatok menedzselése. Mit és miért kell menedzselni a termelésben?

Alkalmazott modul: Programozás

Matematika tanmenet (A) az HHT-Arany János Tehetségfejleszt Program el készít -gazdagító évfolyama számára

HALMAZOK TULAJDONSÁGAI,

Darts: surranó nyilak, gondolkodtató problémák Kombinatorika 6. feladatcsomag

JANUS PANNONIUS TUDOMÁNYEGYETEM. Schipp Ferenc ANALÍZIS I. Sorozatok és sorok

JUHÁSZ TIBOR TÓTH BERTALAN KOLLEKCIÓK ALKALMAZÁSA A FELADATMEGOLDÁSOKBAN

Árvainé Libor Ildikó Murátiné Szél Edit. Tanítói kézikönyv. tanmenetjavaslattal. Sokszínû matematika. 4

Programozási tételek

Vízminőség. Vas alapanyagokból készült hőtermelőkhöz max. 100 C - üzemi hőmérsékletig. Üzemeltetési kézikönyv (2012/02) HU

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

INFORMATIKAI ALAPISMERETEK

A 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

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

Matematikai alapismeretek. Huszti Andrea

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

Széchenyi István Egyetem, 2005

80-as sorozat - Idõrelék A

JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

ZC3. vezérlőpanel. Általános jellemzők. A vezérlőpanel leírása

44. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY. Országos döntő, 1. nap május 29.


Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2015/ Szegedi Tudományegyetem Informatikai Tanszékcsoport

Egy irányított szakasz egyértelműen meghatároz egy vektort.

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

A 2008/2009 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Varlogic NR6/NR12. teljesítménytényezô szabályozó automatika. Kezelési és üzembe helyezési útmutató

Átírás:

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK 1. EGY SOROZATHOZ EGY SOROZATOT RENDELŐ TÉTELEK 1.1 Rendezések 1.1.1 Kitűzés Adott egy sorozat, és a sorozat elemein értelmezett egy < reláció. Rendezzük a sorozat elemeit növekvő (csökkenő) sorrendbe a megadott reláció szerint. 1.1.2 Specifikáció A: Tömb[N]:H Ef: A, N adott, < reláció adott. Uf: A sorozat tartalmazza az eredetileg is tartalmazott elemeit, az elemek növekvően (csökkenően) rendezettek a < reláció szerint. 1.1.3 Algoritmusok Megjegyzés: mivel a rendezések alapvető fontosságúak a programozásban, ezért nagyon sokféle rendezési algoritmus létezik, amelyek azonban bonyolultság és hatékonyság szempontjából eltérőek. A következőkben a legegyszerűbb rendezési algoritmusokat ismertetjük. 1.1.3.1 Közvetlen kiválasztásos rendezés Elve: Az első elemet összehasonlítjuk az utána következő elemmel, és ha az utána következő elem kisebb, akkor cserélünk. Az első elem összehasonlítását tovább folytatjuk a többi elemmel is, egészen addig, amíg a sorozat végére nem érünk. Ha a végére értünk, akkor az azt jelenti, hogy az első elem a helyére került. Ezt követően a második, harmadik elemmel járunk el ugyanígy. A legutolsó elemet már nem kell összehasonlítani, az automatikusan kerül a helyére. Szemléltető ábra: 1

Algoritmus: Eljárás KozKivRend: Ciklus I:=0-től N-2-ig Ciklus J:=I+1-től N-1-ig Ha A[J]<A[I] Akkor Csere(A[I],A[J]) Megjegyzés: az algoritmus 0 kezdőindexű tömbre lett megfogalmazva. 1.1.3.2 Buborékos rendezés Elve: A buborékos rendezés alapelve az, hogy a sorozat legvégéről az eleje felé indulva minden szomszédos elemet összehasonlítunk. Amennyiben a hátrébb elhelyezkedő elem kisebb (nagyobb), mint az előtte lévő elem, akkor a két elemet felcseréljük. Az első menet a teljes sorozatra kiterjed, és az legkisebb elemet teszi a helyére. A következő menetekben a második, harmadik, stb. legkisebb elemeket tesszük a helyére. Szemléltető ábra: Algoritmus: Eljárás BuborekRend: Ciklus I:=0-től N-2-ig Ciklus J:=N-1-től I+1-ig (-1-esével) Ha A[J-1]>A[J] akkor Csere(A[J-1],A[J]). Megjegyzés: az algoritmus 0 kezdőindexű tömbre lett megfogalmazva. 2

1.1.3.3 Minimum-kiválasztásos rendezés Elve: Az első elemet a mögöttük lévők közül csak a legkisebbel cseréljük és csak akkor, ha az kisebb, mint az első elem. Ehhez egy minimum-kiválasztást kell alkalmazni a sorozat további részére. Miután az első elem a helyére került, ugyanígy folyatatjuk az eljárást a sorozat következő elemeivel. Szemléltető ábra: Algoritmus: Ciklus I:=0-től N-2ig Ind:=I // Minimum-kiválasztás kezdete Ciklus J:=I+1-től N-1-ig Ha A[J]<A[Ind] Akkor Ind:=J // Minimum-kiválasztás kezdete Ha I<>Ind Akkor csere(a[i],a[ind]) Megjegyzés: az algoritmus 0 kezdőindexű tömbre lett megfogalmazva. 1.1.3.4 Beillesztéses rendezés Elve: A rendezendő elemeket a kártyalapoknál megszokott módszerrel rendezzük. Minden új elemet a már korábban rendezett elemek közé beillesztjük úgy, hogy a rendezettség megmaradjon. A beillesztés úgy történik, hogy a beillesztendő elemet jobbról balra haladva összehasonlítjuk a már rendezett elemekkel, és ha a beillesztendő elem kisebb, akkor az aktuális elemet eggyel jobbra léptetjük. Ezt mindaddig folytatjuk, amíg meg nem találjuk a beillesztendő elem helyét. 3

Algoritmus: Eljárás BeillesztRendez: Ciklus I:=1-től N-1-ig J:=I-1 X:=A[I] Ciklus amíg (J>-1) és (X<A[J]) A[J+1]:=A[J] J:=J-1 A[J+1]:=X. Megjegyzés: az algoritmus 0 kezdőindexű tömbre lett megfogalmazva. 1.2 Másolás, transzformálás tétele 1.2.1 Kitűzés Adott egy sorozat, a sorozat elemein értelmezett egy függvény (transzformáció). Feladat: Másoljuk a sorozat elemeinek a transzformáltjait egy másik sorozatba. 1.2.2 Specifikáció A:Tömb[1..Max]:H A N:egész / A és B elemszáma f: H A -> H B B:Tömb[1..Max]:H B Ef: A, N adott, 0<= N <= Max Uf: B adott és i [1..N]: ( B[I] f (A[I]) ) / Azaz B tartalmazza az A elemeinek a transzformáltjait / 1.2.3 Algoritmus Eljárás Masol: Ciklus i:=1-től N-ig B[I]:=f(A[I]) 1.2.4 Feladatok - Állítsunk elő egy egészeket tartalmazó tömb elemei alapján egy másik tömböt, amely ugyanezen számok négyzeteit tartalmazza. - Állítsuk elő egy tömb elemeit fordított sorrendben egy másik tömbben! 4

1.3 Kiválogatás tétele 1.3.1 Kitűzés Adott egy sorozat, a sorozat elemein értelmezett egy T tulajdonság. Feladat: Válogassuk ki a sorozat összes T tulajdonságú elemét! 1.3.2 Specifikáció A:Tömb[1..Max]:H N:egész / A elemszáma B:Tömb[1..Max]:H DB:egész / B elemszáma Ef:: A, N adott, 0<= N <= Max Uf: B adott és tartalmazza az A összes T tulajdonságú elemét, 0 <= DB <= N 1.3.3 Algoritmus Eljárás Kivalogat: DB:=0 Ciklus i:=1-től N-ig Ha T(A[I]) Akkor DB:=DB+1 B[DB]:=A[I] 1.3.4 Feladatok - Adott egy egészeket tartalmazó tömb. Válogassuk ki belőle azokat, amelyek az elemek átlagától legfeljebb 1-el térnek el. 2. EGY SOROZATHOZ TÖBB SOROZATOT RENDELŐ TÉTEL 2.1 Szétválogatás tétele 2.1.1 Kitűzés Adott egy sorozat, a sorozat elemein értelmezett egy T tulajdonság. Feladat: Válogassuk szét a sorozat T tulajdonságú, ill. nem T tulajdonságú elemeit! 5

2.1.2 Specifikáció A:Tömb[1..Max]:H N:egész / A elemszáma B,C:Tömb[1..Max]:H BDB,CDB:egész / B, C elemszáma Ef:: A, N adott, 0 <= N <= Max Uf: B, C adott; B tartalmazza az A összes T tulajdonságú elemét; C tartalmazza az A összes nem T tulajdonságú elemét; 0<= BDB <=N, 0<= CDB <=N 2.1.3 Algoritmus Eljárás Szetvalogat: BDB:=0 CDB:=0 Ciklus i:=1-től N-ig Ha T(A[I]) Akkor BDB:=BDB+1 B[BDB]:=A[I] Különben CDB:=CDB+1 C[CDB]:=A[I] Megjegyzés: a szétválogatás több (egymást kizáró) tulajdonság alapján, több vektorba is történhet. 2.1.4 Feladat - Egy személyi adatokat (név, nem, telefonszám, fizetés) tartalmazó vektor rekordjait válogassuk szét: nemek szerint ill. fizetési kategóriák szerint (0-50 000; 50-100 000; 100 001-150 000; 150 000-nél több) 3. TÖBB SOROZATHOZ EGY SOROZATOT RENDELŐ TÉTELEK 3.1 Metszetképzés tétele 3.1.1 Kitűzés Adott két sorozat, a sorozatokon belül egy-egy elem csak egyszer szerepel. Feladat: Határozzuk meg azt a sorozatot, amely a két sorozat közös elemeit tartalmazza. 6

3.1.2 Specifikáció A,B:Tömb[1..Max]:H N,M:egész / A és B elemszáma C:Tömb[1..Max]:H L: egész / C elemszáma Ef.: A,B adott, elemeik egyediek; 0<=N<=Max, 0<=M<=Max Uf: C tartalmazza A és B közös elemeit, 0<=L<=Min(A,B) /a metszet legfeljebb annyi elemet tartalmaz, mint a kisebb elemszámú sorozat/ 3.1.3 Algoritmus Elve: minden A-beli elemet keresünk a B tömbben. Ha egy A-beli megtalálható a B-ben, akkor felvesszük a közös elemek közé, a C-be. Eljárás Metszet: L:=0; Ciklus I:=1-től N-ig J:=1; / A[I] keresése B-ben Ciklus amíg J<=M és A[I]<>B[J] J:=J+1 Ha J<=M / Ha A[I] megtalálható B-ben akkor L:=L+1 C[L]:=A[I] 3.1.4 Feladat Ismerjük a bostoni, ill. a New York-i maratoni futóversenyeken célbaérkezők névsorát. Készítsük el azok névsorát, akik mindkét versenyen célba értek! 3.2 Unioképzés tétele 3.2.1 Kitűzés Adott két sorozat, a sorozatokon belül egy-egy elem csak egyszer szerepel. Feladat: Határozzuk meg azt a sorozatot, amely minden olyan elemet tartalmaz, amely legalább az egyiknek eleme. 7

3.2.2 Specifikáció A,B:Tömb[1..Max]:H N,M:egész / A és B elemszáma C:Tömb[1..2*Max]:H L: egész / C elemszáma Ef.: A,B adott; elemeik egyediek; 0<=N<=Max, 0<=M<=Max Uf: C tartalmazza az A és B sorozatok unióját, Max(A,B)<=L<=M+N Megjegyzés: a kimenő sorozat elemszáma legrosszab esetben 2*Max, ez akkor áll elő, ha A és B is Max elemet tartalmaz, és nincsen közös elemük. 3.2.3 Algoritmus Elve: először A összes elemét átmásoljuk C-be. Majd B elemeit sorra vesszük, és mindazokat, amelyek nem szerepelnek az A tömbben, szintén C-be másoljuk. Eljárás Unio: Ciklus I:=1-től N-ig /A elemeinek másolása C-be C[I]:=A[I] L:=N Ciklus J:=1-től M-ig I:=1 / B[J] keresése A-ban Ciklus I<=N és B[J]<>A[I] I:=I+1 Ha (I>N) / Ha B[J] nem szerepel A-ban akkor L:=L+1 C[L]:=B[J] 3.2.4 Feladat Ismerjük a bostoni, ill. a New York-i maratoni futóversenyeken célbaérkezők névsorát. Készítsük el azok névsorát, akik legalább az egyik versenyen célba értek! 3.3 Összefuttatás tétele (UNIÓ) Az összefuttatás rendezett sorozatok rendezett unióját (metszetét, különbségét, szimmetrikus differenciáját) állítja elő. A rendezettség miatt az összefuttatás hatékonyabb, mint az egyszerű únió, metszet tétel. Az algoritmust először unióra fogalmazzuk meg. 8

3.3.1 Kitűzés Adott két rendezett sorozat, a sorozatokon belül egy-egy elem csak egyszer szerepel. Feladat: Határozzuk meg a két sorozat rendezett unióját. 3.3.2 Specifikáció A,B:Tömb[1..Max]:H N,M:egész / A és B elemszáma C:Tömb[1..2*Max]:H L: egész / C elemszáma Ef.: A,B adottak, elemeik egyediek és növekvően rendezettek; 0<=N<=Max, 0<=M<=Max Uf: C tartalmazza az A és B sorozatok rendezett unióját, Max(A,B)<=L<=M+N 3.3.3 Algoritmus Az összefuttató algoritmus lényege (unió esetén), hogy a két bemenő sorozat aktuális elemeit összehasonlítva a kisebbik az eredménysorozatba kerül, és a kisebb elem sorozatában továbblépünk. Egyenlő elemek esetében az elem az eredménysorozatba kerül, és mindkét sorozatban lépünk. Ha az egyik sorozat elfogy, a másik maradék elemei bekerülnek az eredménysorozatba. Eljárás OsszefuttatUnio: I:=1 J:=1 L:=0 Ciklus amíg (I<=N) és (J<=M) L:=L+1 Elágazás A[I]<B[J] esetén C[L]:=A[I] I:=I+1 A[I]>B[J] esetén C[L]:=B[J] J:=J+1 A[I]=B[J] esetén C[L]:=A[I] /vagy C[L]:=B[J] I:=I+1 J:=J+1 // A megmaradó elemek másolása C-be, a két ciklus közül legfeljebb az egyik hajtódik végre! Ciklus K:=I-től N-ig /Csak akkor fut le, ha marad elem A-ban/ L:=L+1 C[L]:=A[K] 9

Ciklus K:=J-től M-ig /Csak akkor fut le, ha marad elem B-ben/ L:=L+1 C[L]:=B[K] 3.4 Összefuttatás tétele (METSZET) 3.4.1 Kitűzés Adott két rendezett sorozat, a sorozatokon belül egy-egy elem csak egyszer szerepel. Feladat: Határozzuk meg a két sorozat rendezett metszetét, azaz, azokat az elemeket, amelyek mindkét sorozatban szerepelnek. 3.4.2 Specifikáció A,B:Tömb[1..Max]:H N,M:egész / A és B elemszáma C:Tömb[1..Max]:H L: egész / C elemszáma Ef.: A,B adottak, elemeik egyediek és növekvően rendezettek; 0<=N<=Max, 0<=M<=Max Uf: C tartalmazza az A és B sorozatok rendezett metszetét, 0<=L<=Min(A,B) 3.4.3 Algoritmus Metszet esetén az algoritmus annyiban változik, hogy csak az egyező elemek kerülnek az eredménysorozatba, és a végén a két ciklus értelemszerűen elmarad. Eljárás OsszefuttatMetszet: I:=1 J:=1 L:=0 Ciklus amíg (I<=N) és (J<=M) Elágazás A[I]<B[J] esetén I:=I+1 /csak továbblép az A-ban A[I]>B[J] esetén J:=J+1 /csak továbblép a B-ban A[I]=B[J] esetén L:=L+1 /ez a sor az uniónál az elágazás előtt volt/ C[L]:=A[I] /vagy C[L]:=B[J] I:=I+1 J:=J+1 10