Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/282014. 09. 18.2014. 09. 18.2014. 09. 18. Tartalom  Rendezési.

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Adatelemzés számítógéppel
Programozási tételek, és „négyzetes” rendezések
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
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.
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 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
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:
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
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.
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/
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”
Utórendezéses edényrendezés – RADIX „előre”
Rendezési algoritmusok
Rendezések és szövegkezelő függvények
4 Négyzet probléma Készen vagy? B A
A Dijkstra algoritmus.
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.
2. Feladat. És akkor kezdjük is el! Menü Mint ahogy már megszokhattuk módosítsuk az editek text mező tulajdonságát a minta szerint! Tovább.
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
Edényrendezés Név: Pókó Róbert Neptun: OYJPVP. Példa RADIX „előre” algoritmusra d=3 hosszú bináris számokra (r=2) Ekkor egy tömbbel meg lehet oldani a.
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
Programozási tételek Mik is ezek?
A maximum kiválasztás algoritmusa
Informatikai gyakorlatok 11. évfolyam
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Programozási alapismeretek 11. előadás

ELTE 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 Szlávi-Zsakó: Programozási alapismeretek 11.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?

ELTE Szlávi-Zsakó: Programozási alapismeretek 11.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.

ELTE Szlávi-Zsakó: Programozási alapismeretek 11.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! X X X X … A pirossal jelöltek már a helyükön vannak

ELTE 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 Szlávi-Zsakó: Programozási alapismeretek 11.7/ Minimum-kiválasztásos rendezés A lényeg:  Vegyük az első elem 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! X X X X … A pirossal jelöltek már a helyükön vannak

ELTE 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ás

ELTE 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é. X … X X X

ELTE 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 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 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 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és e

ELTE Szlávi-Zsakó: Programozási alapismeretek 11.14/ 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! X

ELTE 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 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! X

ELTE 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 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 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 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 Szlávi-Zsakó: Programozási alapismeretek 11.21/ Számlálva szétosztó rendezés A lényeg:  Első lépésben számoljuk meg, hogy melyik értékből hány van a rendezendő sorozatban!  Ezután adjuk meg, hogy az utolsó i értéket hova kell tenni!  Ez pontosan az i-nél kisebb vagy egyenlő számok száma a sorozatban!  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 utolsó i értékű elemet ettől kezdve eggyel kisebb helyre kell tenni.

ELTE Szlávi-Zsakó: Programozási alapismeretek 11.22/ Számlálva szétosztó rendezés Db[1..M]:=0 i=1..N Db[X[i]]:=Db[X[i]]+1 i=2..M Db[i]:=Db[i–1]+Db[i] i=1..N Y[Db[X[i]]]:=X[i] Db[X[i]]:=Db[X[i]]–1  Mozgatások száma: N  Additív műveletek száma: 2  M–2+2  N Algoritmus:

ELTE Szlávi-Zsakó: Programozási alapismeretek 11.23/ Számláló rendezés A lényeg:  Ha nem megy a szétosztó rendezés, akkor segítsünk magunkon, először számláljunk, 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.- től balra levő, vele egyenlő elemek számát!

ELTE Szlávi-Zsakó: Programozási alapismeretek 11.24/ Számláló rendezés 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]]:=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 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 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 Szlávi-Zsakó: Programozási alapismeretek 11.27/ Az évfolyamZh A minta letöltése: progalap_evfzh_minta.zip vagy lap/MintaZh.zip és a „partitúra”: progalap_evfolyamzh_teszteles.pdf

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