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

Hasonló dokumentumok
Programozási alapismeretek 11. előadás

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

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

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

Informatikai tehetséggondozás:

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

Az összetett programozási tételek is egy tőről fakadnak

Rendezések. Összehasonlító rendezések

Egyszerű programozási tételek

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

PROGRAMOZÁSI TÉTELEK

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

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

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

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

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

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

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

Programozás II. előadás

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

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Programozási segédlet

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

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

VÉLETLEN PERMUTÁCIÓ ELŐÁLLÍTÁSA

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

Összetett programozási tételek

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

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

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

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

Programozási alapismeretek 3. előadás

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Gyakorló feladatok ZH-ra

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Kombinatorikai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Egyszerű programozási tételek

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

A rendezési algoritmusok tanításának céljai és módszerei

Kombinatorikai algoritmusok

Disztribúciós feladatok. Készítette: Dr. Ábrahám István

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Töltőfunkció Kezelési Utasítás

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

Algoritmizálás és adatmodellezés 2. előadás

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

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

Programozási alapismeretek 1. 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

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

ELEMI PROGRAMOZÁSI TÉTELEK

Számjegyes vagy radix rendezés

1. ábra. Számláló rendezés

Algoritmuselmélet 2. előadás

Informatikai tehetséggondozás:

14. Mediánok és rendezett minták

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Visszalépéses kiválogatás

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

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

Programozás alapjai. 8. előadás

Adatszerkezetek I. 4. előadás

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

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

Felvételi tematika INFORMATIKA

PFW Programing Fundamentals Wizard

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

TSZA-04/V. Rendszerismertető: Teljesítmény szabályzó automatika / vill

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Adatszerkezetek II. 10. előadás

Erdélyi Magyar TudományEgyetem (EMTE

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Egyszerű programozási tételek

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

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

A 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. II. (programozás) kategória

Objektum Orientált Programozás VII.

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Szélsőérték-számítás

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

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.

Visszalépéses keresés

Bevezetés az informatikába

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 és programozás 2

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

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

PROGRAMOZÁSMÓDSZERTAN

Oktatási Hivatal. A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. II. (programozás) kategória

Dr. Schuster György február / 32

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

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Számláló rendezés. Példa

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Algoritmusok vektorokkal keresések 1

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Átírás:

Tartalom Programozási alapismeretek 11. előadás Rendezési feladat specifikáció Egyszerű cserés Minimum-kiválasztásos Buborékos Javított buborékos Beillesztéses Javított beillesztéses Szétosztó Számlálva szétosztó Rendezések hatékonysága idő Szlávi- Zsakó: Programozási alapismeretek 11. /8 Rendezési feladat Specifikáció: Bemenet: :Egész, :Tömb[1..:Valami] Kimenet: :Tömb[1..:Valami] Előfeltétel: 0 Utófeltétel: RendezettE( ) és Permutáció() Jelölések: o : az kimeneti (megálláskori) értéke o RendezettE(): rendezett-e? o Permutáció(): az elemeinek egy permutációja-e? 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 1): Z[i] Z[i+1] Permutációhalmaz: Permutáció(Z):= a Z elemeinek összes permutációját tartalmazó halmaz. Programozási alapismeretek 11. 3/8 Szlávi- Zsakó: Programozási alapismeretek 11. 4/8 Egyszerű cserés Egyszerű cserés 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 pirossal jelöltek már helyükön A pirossal jelöltek már a helyükön i=1.. 1 j=i+1.. [i]>[j] S:=[i] [i]:=[j] [j]:=s Hasonlítások száma: 1++..+ 1= Mozgatások száma: 03 Programozási alapismeretek 11. 5/8 Szlávi- Zsakó: Programozási alapismeretek 11. 6/8

l fe Minimumkiválasztásos Vegyük az első elem mögöttiek minimumát, s cseréljük meg az elsővel, ha kell! Ezután ugyanezt csináljuk a második Végül az utolsó két A pirossal jelöltek már a helyükön Minimum-kiválasztás Minimumkiválasztásos i=1.. 1 Min:=i j=i+1.. [Min]>[j] Min:=j S:=[i] [i]:=[min] [Min]:=S Hasonlítások száma: 1++..+ 1= Mozgatások száma: 3 ( 1) Programozási alapismeretek 11. 7/8 Szlávi- Zsakó: Programozási alapismeretek 11. 8/8 Buborékos Buborékos Hasonlítsunk minden elemet a mögötte levővel, s ha kell, cserél-jük meg! Ezután ugyanezt csiná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é. i=.., -1-esével j=1..i 1 [j]>[j+1] S:=[j] [j]:=[j+1] [j+1]:=s Hasonlítások száma: 1++..+ 1= Mozgatások száma: 0 3 Programozási alapismeretek 11. 9/8 Szlávi- Zsakó: Programozási alapismeretek 11. 10/8 Javított buborékos Megfigyelések: Ha a belső ciklusban egyáltalán nincs csere, akkor be lehetne fejezni a t. Ha a belső ciklusban a K. helyen van az utolsó csere, akkor a K+1. helytől már biz-tosan jó elemek, a külső ciklusvál-tozóval többet is léphetünk. Programozási alapismeretek 11. 1/8 Átírás amíg -os ciklussá u za esc ot eher ósl y ézyg jel Javított buborékos es i:= i cs:=0 j=1..i 1 [j]>[j+1] S:=[j] [j]:=[j+1] [j+1]:=s cs:=j i:=cs Szlávi- Zsakó: Programozási alapismeretek 11. 13/8

Beillesztéses 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! Programozási alapismeretek 11. 14/8 Beillesztéses i=.. j:=i 1 j>0 és [j]>[j+1] S:=[j] [j]:=[j+1] [j+1]:=s j:=j 1 Hasonlítások száma: 1 Mozgatások száma: 0 3 Szlávi- Zsakó: Programozási alapismeretek 11. 15/8 Javított beillesztéses 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 kisebbeket 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! Programozási alapismeretek 11. 16/8 Elem-mozgatás, nem csere! Javított beillesztéses i=.. s:=[i] j:=i 1 j>0 és [j]>s [j+1]:=[j] j:=j 1 [j+1]:=s Hasonlítások száma: 1 Mozgatások száma: ( 1) ( 4) Szlávi- Zsakó: Programozási alapismeretek 11. 17/8 Szétosztó Szétosztó Ha a rendezendő sorozatról speciális tudásunk van, akkor megpróbálkozhatunk más módszerekkel is. Specifikáció lépésben: Bemenet: :Egész, :Tömb[1..:Egész] Kimenet: Y:Tömb[1..:Egész] Előfeltétel: 0 és Permutáció(1,,) Utófeltétel: RendezettE(Y) és Y Permutáció() i=1.. Y[[i]]:=[i] Persze ehelyett írhattuk volna: Y[i]:=i!!! Azaz a feladat akkor érdekes, ha pl. [i] egy rekord, aminek az egyik mezője az 1 és közötti egész szám:,y:tömb[1..:rekord(kulcs:egész, )] i=1.. Y[[i].kulcs]:=[i] Programozási alapismeretek 11. 18/8 Szlávi- Zsakó: Programozási alapismeretek 11. 19/8

Számlálva szétosztó Számlálva szétosztó Előfeltétel: a rendezendő értékek 1 és M közötti egész számok. Specifikáció: Bemenet:,M:Egész, :Tömb[1..:Egész] Kimenet: Y:Tömb[1..:Egész] Előfeltétel: 0 és M 1 és i(1 i ): 1 [i] M Utófeltétel: RendezettE(Y) és Y Permutáció() Programozási alapismeretek 11. 0/8 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 Szlávi- Zsakó: Programozási alapismeretek 11. 1/8 helyre kell tenni. Számlálva szétosztó Db[1..M]:=0 i=1.. Db[[i]]:=Db[[i]]+1 i=..m Db[i]:=Db[i 1]+Db[i] i=1.. Y[Db[[i]]]:=[i] Db[[i]]:=Db[[i]] 1 Számláló Ha nem megy a szétosztó, akkor segítsünk magunkon, először számláljunk, azután osszunk szét! Ehhez használhatjuk a legegyszerűbb, cserés elvét. Jelentse Db[i] az i. elemnél kisebb, vagy az i.-től balra levő, vele egyenlő elemek számát! Mozgatások száma: Additív műveletek száma: M + Programozási alapismeretek 11. /8 Szlávi- Zsakó: Programozási alapismeretek 11. 3/8 Számláló Rendezések hatékonysága i=1.. 1 j=i+1.. [i]>[j] Db[i]:=Db[i] Db[j]:=Db[j]+1 +1 i=1.. Y[Db[i]]:=[i] Hasonlítások száma: 1++..+ 1= Mozgatások száma: idejű ek: Egyszerű cserés Minimum-kiválasztásos Buborékos Javított buborékos Beillesztéses Javított beillesztéses Számláló Additív műveletek száma: hasonlítások Programozási alapismeretek 11. 4/8 száma Szlávi- Zsakó: Programozási alapismeretek 11. 5/8

Rendezések hatékonysága Az évfolyamzh (+M) idejű ek: (de speciális feltétellel) Szétosztó Számlálva szétosztó Kitekintés: (Algoritmusok tantárgy) Lesznek log() idejű ek. em lehet log()-nél jobb általá-nos! A minta letöltése: http://progalap.elte.hu/downloads/kov /progalap_evfzh_minta.zip vagy http://people.inf.elte.hu/szlavi/bscpro galap/mintazh.zip és a partitúra : http://progalap.elte.hu/downloads/kov /progalap_evfolyamzh_teszteles.pdf Programozási alapismeretek 11. 6/8 Szlávi- Zsakó: Programozási alapismeretek 11. 7/8 Programozási alapismeretek 11. előadás vége