Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/312014. 07. 14.2014. 07. 14.2014. 07. 14. Tartalom.

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Programozási tételek, és „négyzetes” rendezések
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Programozási alapismeretek
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
INFOÉRA 2006 Kombinatorika
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Algoritmizálás, adatmodellezés tanítása 4. előadás
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Algoritmusok Az algoritmus fogalma:
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
ADATBÁZISOK
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Edényrendezés - RADIX „vissza” - bináris számokra
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Darupályák tervezésének alapjai
Figyelmeztetés! E program használata fokozottan
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Exponenciális egyenletek
Előrendezéses edényrendezés – RADIX „vissza”
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Rendezési algoritmusok
Rendezések és szövegkezelő függvények
A Dijkstra algoritmus.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Bernát Péter Buborékos rendezés.
Egyszerű cserés rendezés
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Beillesztéses rendezés
Edényrendezés. Működés, elvek - Az edényrendezés nem összehasonlító rendezés. - A rendezendő elemeket nem hasonlítjuk össze, hanem a rendezés során az.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Objektum orientált programozás
Programozási alapismeretek 11. előadás
Gráf szélességi bejárása. Cél Az algoritmus célja az, hogy bejárjuk egy véges gráf összes csúcsát és kiírjuk őket a kezdőcsúcstól való távolságuk szerint.
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
Programozási alapismeretek 4. előadás. ELTE  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Mediánok és rendezett minták
A maximum kiválasztás algoritmusa
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Programozási alapismeretek 11. előadás

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési feladat – specifikáció Rendezési feladat  Egyszerű cserés rendezés Egyszerű cserés rendezés  Minimum-kiválasztásos rendezés Minimum-kiválasztásos rendezés  Buborékos rendezés Buborékos rendezés  Javított buborékos rendezés Javított buborékos rendezés  Beillesztéses rendezés Beillesztéses rendezés  Javított beillesztéses rendezés Javított beillesztéses rendezés  Szétosztó rendezés Szétosztó rendezés  Számlálva szétosztó rendezés Számlálva szétosztó rendezés  Rendezések hatékonysága – idő Rendezések hatékonysága

ELTE 3/ Rendezési feladat Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: X’:Tömb[1..N:Valami]  Előfeltétel: N  0  Utófeltétel: RendezettE(X’) és X’  Permutáció(X)  Jelölések: o X’: az X kimeneti (megálláskori) értéke o RendezettE(X): X rendezett-e? o X’  Permutáció(X): X’ az X elemeinek egy permutációja-e? Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.

ELTE 4/ Rendezések (fontos új fogalmak, jelölések)  Aposztróf a specifikációban: Ha egy adat előfordul a bemeneten és kimene- ten is, akkor az UF-ben együtt kell előfordul- nia az adat bemenetkori és kimenetkori érté- ke. Megkülönböztetésül a kimeneti értéket „megaposztrofáljuk”. Pl.: Z’:=a Z kimeneti (megálláskori) értéke.  „Rendezett-e” predikátum: RendezettE(Z):  i(1≤i≤N–1): Z[i]≤Z[i+1]  Permutációhalmaz: Permutáció(Z):= a Z elemeinek összes permu- tációját tartalmazó halmaz. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.

ELTE 5/ Egyszerű cserés rendezés A lényeg:  Hasonlítsuk az első ele- met az összes mögötte levővel, s ha kell, cse- réljük meg!  Ezután ugyanezt csi- náljuk a második elem- re!  …  Végül az utolsó két elemre! A pirossal jelöltek már a helyükön vannak A minimum az „alsó” végére kerül. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.6/ Egyszerű cserés rendezés  Hasonlítások száma: N–1=  Mozgatások száma: 0 … i=1..N – 1 j=i+1..N X[i]>X[j] S:=X[i]  X[i]:=X[j] X[j]:=S Algoritmus: I N Elem-csere

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.7/ Minimum-kiválasztásos rendezés A lényeg:  Vegyük az első elem és a mögöttiek minimu- mát, s cseréljük meg az elsővel ( ha kell )!  Ezután ugyanezt csináljuk a második elemre!  …  Végül az utolsó két elemre! A pirossal jelöltek már a helyükön vannak A minimum az „alsó” végére kerül.

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.8/ Minimum-kiválasztásos rendezés  Hasonlítások száma: N–1=  Mozgatások száma: 3  (N–1) i=1..N – 1 Min:=i j=i+1..N X[Min]>X[j] Min:=j  S:=X[i] X[i]:=X[Min] X[Min]:=S Algoritmus: I N Elem-csere Minimum- kiválasztásMinimum- kiválasztás az i.-től

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.9/ Buborékos rendezés A lényeg:  Hasonlítsunk minden elemet a mögötte le- vővel, s ha kell, cserél- jük meg!  Ezután ugyanezt csi- náljuk az utolsó elem nélkül!  …  Végül az első két elem- re! A maximum a „felső” végére kerül. A többiek is tartanak a helyük felé. A pirossal jelöltek már a helyükön vannak

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.10/ Buborékos rendezés  Hasonlítások száma: N–1=  Mozgatások száma: 0 … i=N..2, -1-esével j=1..i – 1 X[j]>X[j+1] S:=X[j]  X[j]:=X[j+1] X[j+1]:=S Algoritmus: I N Elem-csere

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.11/ Buborékos rendezés i:=N i2i2 j=1..i – 1 X[j]>X[j+1] S:=X[j]  X[j]:=X[j+1] X[j+1]:=S i:=i–1 Algoritmus: I N

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.12/ Javított buborékos rendezés Megfigyelések:  Ha a belső ciklusban egyáltalán nincs csere, akkor be lehetne fejezni a rendezést.  Ha a belső ciklusban a K. helyen van az utolsó csere, akkor a K+1. helytől már biz- tosan jó elemek vannak, a külső ciklusvál- tozóval többet is léphetünk.

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.13/ Algoritmus: Javított buborékos rendezés i:=N i≥2 cs:=0 j=1..i–1 X[j]>X[j+1] S:=X[j]  X[j]:=X[j+1] X[j+1]:=S cs:=j i:=cs I N Átírás ‘amíg’-os ciklussá Az utolsó cserehely feljegyzése

ELTE 14/31Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek Beillesztéses rendezés A lényeg:  Egy elem rendezett.  A másodikat vagy mögé, vagy elé tesszük, így már ketten is rendezettek.  …  Az i-ediket a kezdő, i–1 rendezettben addig hozzuk előre cserékkel, amíg a helyére nem kerül; így már i darab rendezett lesz.  …  Az utolsóval ugyanígy!

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.15/ Beillesztéses rendezés i=2..N j:=i–1 j>0 és X[j]>X[j+1] S:=X[j] X[j]:=X[j+1] X[j+1]:=S j:=j–1  Hasonlítások száma: N – 1 …  Mozgatások száma: 0 … Algoritmus: Elem-csere

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.16/ Javított beillesztéses rendezés A lényeg:  Egy elem rendezett.  A másodikat vagy mögé, vagy elé tesszük, így már ketten is rendezettek.  …  Az i-ediknél a nála kiseb- beket tologassuk hátra, majd illesszük be eléjük az i-ediket; így már i darab rendezett lesz.  …  Az utolsóval ugyanígy!

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.17/ Javított beillesztéses rendezés i=2..N s:=X[i] j:=i–1 j>0 és X[j]>s X[j+1]:=X[j] j:=j–1 X[j+1]:=s  Hasonlítások száma: N – 1 …  Mozgatások száma: 2  (N – 1) … Algoritmus: Elem-mozgatás, nem csere!

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.18/ Szétosztó rendezés A lényeg: Ha a rendezendő sorozatról speciális tudá- sunk van, akkor megpróbálkozhatunk más módszerekkel is. Specifikáció – rendezés N lépésben:  Bemenet: N:Egész, X:Tömb[1..N:Egész]  Kimenet: Y:Tömb[1..N:Egész]  Előfeltétel: N  0 és X  Permutáció(1,…,N)  Utófeltétel: RendezettE(Y) és Y  Permutáció(X)

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.19/ Szétosztó rendezés i=1..N Y[X[i]]:=X[i]  Persze ehelyett írhattuk volna: Y[i]:=i!  Azaz a feladat akkor érdekes, ha pl. X[i] egy rekord, aminek az egyik mezője az 1 és N közötti egész szám: X,Y:Tömb[1..N:Rekord(kulcs:Egész,…)] Algoritmus: i=1..N Y[X[i].kulcs]:=X[i] Algoritmus:

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.20/ Számlálva szétosztó rendezés Előfeltétel: a rendezendő értékek 1 és M közötti egész számok. Specifikáció:  Bemenet: N,M:Egész, X:Tömb[1..N:Egész]  Kimenet: Y:Tömb[1..N:Egész]  Előfeltétel: N  0 és M  1 és  i(1  i  N): 1  X[i]  M  Utófeltétel: RendezettE(Y) és Y  Permutáció(X)

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.21/ Számlálva szétosztó rendezés A lényeg:  Első lépésben számláljuk meg, hogy melyik értékből hány van a rendezendő sorozatban!  Ezután adjuk meg, hogy az első i értéket hova kell tenni: ez pontosan az i-nél kisebb számok száma a sorozatban +1 !  Végül nézzük végig újra a sorozatot, s az i értékű elemet tegyük a helyére, majd módosít- sunk: az első i értékű elemet ettől kezdve eggyel nagyobb helyre kell tenni.

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.22/ Számlálva szétosztó rendezés Db[1..M]:=0 [ Db[i]: hány darab van i-ből? ] i=1..N Db[X[i]]:=Db[X[i]]+1 Első[1]:=1 i=2..M Első[i]:=Első[i–1]+Db[i–1] [ Első[i]: hol az i. elsője? ] i=1..N Y[Első[X[i]]]:=X[i] Első[X[i]]:=Első[X[i]]+1  Mozgatások száma: N  Additív műveletek száma: 3  M–3+2  N Algoritmus:

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.23/ Számláló rendezés A lényeg:  Ha nem megy a szétosztó rendezés ( ismeret- len az M ), akkor segítsünk magunkon, először számláljunk ( „sorrendet” ), azután osszunk szét!  Ehhez használhatjuk a legegyszerűbb, cserés rendezés elvét.  Jelentse Db[i] az i. elemnél kisebb, vagy az i.- kel egyenlő, de tőle balra levő elemek számát! ↓ A Db[i]+1 használható az i. elemnek a rende- zett sorozatbeli indexeként.

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.24/ Számláló rendezés Db[1..N]:=0 i=1..N–1 j=i+1..N X[i]>X[j] Db[i]:=Db[i]+1 Db[j]:=Db[j]+1 i=1..N Y[Db[i]+1]:=X[i] Algoritmus: I N  Hasonlítások száma: N–1=  Mozgatások száma: N  Additív műveletek száma: hasonlítások száma

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.25/ Rendezések hatékonysága N 2 idejű rendezések:  Egyszerű cserés rendezés    Minimum-kiválasztásos rendezés    Buborékos rendezés    Javított buborékos rendezés    Beillesztéses rendezés    Javított beillesztéses rendezés    Számláló rendezés  

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.26/ Rendezések hatékonysága N (N+M) idejű rendezések: ( de speciális feltétellel )  Szétosztó rendezés    Számlálva szétosztó rendezés   Kitekintés: ( Algoritmusok tantárgy )  Lesznek N  log(N) idejű rendezések.  Nem lehet N  log(N)-nél jobb általá- nos rendezés!

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.27/ Az évfolyamZh A minták letöltése: Zhk2011.zip A tesztelőrendszer:

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.28/ Az évfolyamZh Tudnivalók:  a main.cpp fájlt egy web-es felületen kell beküldeni (akár többször is!) és ott lehet megnézni a kapott értékelést;  ide a zh-t író az EHA-kódjával ( pontosabban a laborok- ban érvényes kódjával ) léphet majd be a saját jelszavával;  a program standard inputról olvas, standard out- putra ír, a tesztelést be- és kimenet átirányítással old- juk meg;  a bemenet biztosan helyes, ellenőrizni nem kell;  a kimenetre csak az eredményeket szabad kiírni, semmi egyebet nem;  a bemenet és a kimenet szintaxisa és sorrendje is rögzített, attól eltérni nem szabad.

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.29/ Az évfolyamZh Edzeni való:  A zh-ra –technikailag– fel lehet készül az alábbi linken keresztül:

ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.30/ Az évfolyamZh Edzeni való:  Néhány, jellegzetes lépés:

Programozási alapismeretek 11. előadás vége