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

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

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

Algoritmusok, adatszerkezetek, objektumok

Összetett programozási tételek

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

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

Egyszerű programozási tételek

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

Rekurzív algoritmusok

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

Algoritmusok. Dr. Iványi Péter

Felvételi tematika INFORMATIKA

Webprogramozás szakkör

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

Dr. Schuster György február / 32

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

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

A C# programozási nyelv alapjai

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Java programozási nyelv

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

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Programozási tételek. PPT 2007/2008 tavasz.

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Programozás II. 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.

Programozási nyelvek 6. előadás

Függvények növekedési korlátainak jellemzése

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

Bevezetés az informatikába

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Adatszerkezetek 2. Dr. Iványi Péter

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

Programozás alapjai (ANSI C)

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai 1 Rekurzió

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

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.

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

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.

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

Rekurzió. Dr. Iványi Péter

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

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.

BASH script programozás II. Vezérlési szerkezetek

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

Programozási Módszertan definíciók, stb.

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

ELEMI PROGRAMOZÁSI TÉTELEK

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

Objektumorientált Programozás VI.

Programozási alapismeretek 3. előadás

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

AZ ALGORITMUS. az eredményt szolgáltatja

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

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

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

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

Pontműveletek. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar február 20.

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

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

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

Vezérlési szerkezetek

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Optimalizációs stratégiák 1.

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

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

Hardver leíró nyelvek (HDL)

Adatszerkezetek 1. Dr. Iványi Péter

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

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Már megismert fogalmak áttekintése

INFORMATIKA javítókulcs 2016

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

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

Algoritmuselmélet 2. előadás

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

Programozási segédlet

Bevezetés a programozásba. 5. Előadás: Tömbök

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

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

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Kiterjesztések sek szemantikája

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

8. gyakorlat Pointerek, dinamikus memóriakezelés

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Pénzügyi algoritmusok

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

PROGRAMOZÁSI TÉTELEK

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

Átírás:

Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 1 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 2 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 3 / 47

1. példa Autómosás 1 Előmosás. Az autót mosószeres lével bespriccelik. 2 Kefés mosás. A forgó kefék letisztítják az autót. 3 Öbĺıtés. Az autót tiszta vízzel leöbĺıtik. 4 Szárítás. Az autót levegő áramoltatással megszárítják. Egymást követő utasítások sorozata. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 4 / 47

2. példa Haladó autómosás 1 Ha aktívhabos mosásra fizettünk elő, akkor az autót bespriccelik aktív habbal. Különben csak mosószeres lével spriccelik be az autót. 2 Ha alváz mosásra is előfizettünk, akkor az alvázat is végigspriccelik aktív habbal. 3 Ha kerékmosásra előfizettünk, akkor forgó kefék letisztítják az autót, a kerekeknél pedig speciális keréktisztító kefék mossák a kerekeket. Különben csak a forgó kefék letisztítják az autót. 4 Az autót tiszta vízzel leöbĺıtik. 5 Ha előfizettünk viaszvédelemre, akkor az autót forró viasz réteggel bevonják. 6 Az autót levegőáramoltatással megszárítják. Megjelennek döntési pontok, ahol elágazhat a végrehajtás. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 5 / 47

Euklideszi algoritmus Két pozitív egész szám legnagyobb közös osztója 1 Adott két pozitív egész szám, jelöljük ezeket m-mel és n-nel. A kettő közül legyen m a nagyobbik. 2 Osszuk el m-et n-nel, az osztás maradékát jelöljük r-rel. 3 Ha r értéke 0, azaz m osztható n-nel, akkor az algoritmus végére értünk. Ilyenkor a két szám legnagyobb közös osztója az n értékével egyezik meg, az algoritmus pedig befejeződik. 4 Ha r értéke nem 0, akkor m-be tároljuk el az n jelenlegi értékét, n-be pedig az r értékét. Majd ugorjunk vissza a 2. pontra. Egyes lépések többször is végrehajtásra kerülnek. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 6 / 47

Euklideszi algoritmus Két pozitív egész szám legnagyobb közös osztója 1 Adott két pozitív egész szám, jelöljük ezeket m-mel és n-nel. A kettő közül legyen m a nagyobbik. 2 Osszuk el m-et n-nel, az osztás maradékát jelöljük r-rel. 3 Ha r értéke 0, azaz m osztható n-nel, akkor az algoritmus végére értünk. Ilyenkor a két szám legnagyobb közös osztója az n értékével egyezik meg, az algoritmus pedig befejeződik. Konkrét példa m n r 150 36 6 36 6 0 4 Ha r értéke nem 0, akkor m-be tároljuk el az n jelenlegi értékét, n-be pedig az r értékét. Majd ugorjunk vissza a 2. pontra. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 7 / 47

Algoritmus fogalma Mi az algoritmus? Az algoritmus egy olyan gép, amely valamilyen bemenetekből meghatározott lépéseken keresztül előálĺıt valamilyen kimenetet. Bemenetek: Az algoritmus elején már ismertek. Kimenetek: A bemenetek által egyértelműen meghatározottak. Az algoritmus működése jól meghatározott, azaz determinisztikus. Az algoritmus egyértelmű, jól definiált lépésekből áll, melyek száma minden esetben véges. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 8 / 47

Algoritmus alkotás Legfontosabb lépések A folyamatot elemi lépésekre bontjuk. Figyelembe vesszük az összes felmerülő lehetőséget. Ügyelünk, hogy az algoritmus véges sok lépésben véget érjen. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 9 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 10 / 47

Változók Mi az a változó? Az algoritmusban használt értékeket tárolni kell az algoritmus futása során. Változók a bemenetek, a kimenetek és az algoritmus megvalósításához szükséges lokális változók. Minden változónak van neve, amellyel egyértelműen tudunk rá hivatkozni. Minden változónak van típusa is. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 11 / 47

Típusok Algoritmus leírásnál használt típusok Egészek (pszeudokódban jelölés: egész) Logikaiak (pszeudokódban jelölés: logikai) Általános típus (pszeudokódban jelölés: T) Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 12 / 47

Értékadás Az a változónak értékül adjuk az 5-öt: a 5 Az értékadás bal oldalán egyetlen változó állhat. A jobb oldalon egy érték, egy változó vagy egy kifejezés állhat. Mindig a baloldali változó kapja meg a jobboldali értéket, visszafelé nem történik értékadás. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 13 / 47

Csere Az a és b változó megcserélésének lépései: segéd a a b b segéd Rövidebb jelölés: a b Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 14 / 47

Kifejezések Mi az a kifejezés? Számkifejezésben számokat tartalmazó változók, konkrét számértékek és ezeket összekapcsoló matematikai műveletek szerepelhetnek. Példa: bal jobb + 3, 2 ahol bal és jobb egy-egy változó. A számkifejezések kiértékelése a matematikában megismert szabályok szerint történik. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 15 / 47

Logikai típus Értékek és műveletek Két lehetséges érték: igaz hamis Műveletek: Negálás: És kapcsolat: Vagy kapcsolat: Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 16 / 47

Logikai típus Negálás l logikai értéke hamis igaz l logikai értéke igaz hamis És valamint vagy kapcsolat l 1 log. értéke l 2 log. értéke l 1 l 2 log. értéke l 1 l 2 log. értéke hamis hamis hamis hamis hamis igaz hamis igaz igaz hamis hamis igaz igaz igaz igaz igaz Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 17 / 47

Logikai típus Rövidzár kiértékelés Ha egy és kapcsolat első tagja hamis, akkor a második tag már nem is kerül kiértékelésre, mert a teljes és kapcsolat hamis lesz. Ha egy vagy kapcsolat első tagja igaz, akkor a második tag már nem is kerül kiértékelésre, mert a teljes vagy kapcsolat igaz lesz. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 18 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 19 / 47

Tömbök Mi a tömb? Több azonos típusú értéket lehet egy változóban eltárolni. A tömb elemeire indexeléssel hivatkozunk. A harmadik elem elérése: x[3]. Az indexelés 1-től indul. x: 2 3 5 7 11 13 17 19 1 2 3 4 5 6 7 8 Tömb létrehozása x Létrehoz(egész)[8] Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 20 / 47

Kétdimenziós tömbök Példa 1 2 3 4 5 6 1 2 3 4 3 5 8 4 7 1 2 9 3 0 6 4 6 8 2 1 1 5 4 1 0 2 7 8 Elemre hivatkozás: x[2, 5] Kétdimenziós tömb létrehozása x Létrehoz(egész)[4, 6] Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 21 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 22 / 47

Szekvencia Utasítások egymás utáni végrehajtása x Létrehoz(egész)[3] x[1] 5 x[2] 8 x[3] 11 Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 23 / 47

Elágazás Utasítás feltételes végrehajtása ha a < 0 akkor a a elágazás vége b a Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 24 / 47

Elágazás Kétirányú elágazás ha a < 0 akkor b a különben b a elágazás vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 25 / 47

Elágazás Többirányú elágazás ha a > 0 akkor b a különben ha a < 0 akkor b a különben b 0 elágazás vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 26 / 47

Ciklus Elöltesztelős ciklus ciklus amíg feltétel utasítások ciklus vége Példa ciklus amíg r 0 m n n r r m mod n ciklus vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 27 / 47

Ciklus Hátultesztelős ciklus ciklus utasítások amíg feltétel Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 28 / 47

Ciklus Számlálós ciklus ciklus ciklusv áltozó kezdetiérték-től v ég érték-ig utasítások ciklus vége Példa x Létrehoz(egész)[5] ciklus i 1-től 5-ig x[i] i 2 ciklus vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 29 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 30 / 47

Strukturált programozás Strukturált programnak tekintjük azokat a programokat, amelyek csak a megengedett elemi programokat tartalmazzák a megengedett programkonstrukciók (vezérlési szerkezetek) alkalmazásával. Elemi programok üres program értékadás (állapot változtatás) jele: Megengedett konstrukciók szekvencia elágazás ciklus Bizonyítható, hogy a fenti szabályok megtartásával minden algoritmussal megoldható feladatra adható is megoldás. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 31 / 47

Moduláris programozás Az elkészítendő programot egyetlen utasítással szeretnénk megoldani. Ha ez nem sikerül, akkor több utasítással próbálkozunk, melyek egyes részfeladatokat valósítanak meg. Addig folytatjuk ezt a részfeladatokra bontást, míg minden részfeladatot sikerül megvalósítani elemi utasítások felhasználásával. Összefoglalva: A teljes feladatot részekre bontjuk, majd ezeket a visszavezetés módszerével megoldjuk. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 32 / 47

Függvények vs. eljárások Függvény Eljárás Egy konkrét algoritmust valósít meg. Más függvények vagy eljárások meghívhatják. Vannak bemenetei. Van visszatérési értéke (kimenete). Ezt a vissza kulcsszóval adjuk meg. Egy konkrét algoritmust valósít meg. Más függvények vagy eljárások meghívhatják. Vannak bemenetei. Kimenete csak paramétereken keresztül lehet. Ehhez címszerint adjuk át a paramétert. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 33 / 47

Euklideszi algoritmus Függvénnyel megvalósítva Bemenet: m egész, n egész Kimenet: n egész 1: függvény LNKO(m, n) 2: r m mod n 3: ciklus amíg r 0 4: m n 5: n r 6: r m mod n 7: ciklus vége 8: vissza n 9: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 34 / 47

Euklideszi algoritmus Eljárással megvalósítva Bemenet: m egész, n egész Kimenet: n egész 1: eljárás LNKO(m, címszerint n) 2: r m mod n 3: ciklus amíg r 0 4: m n 5: n r 6: r m mod n 7: ciklus vége 8: eljárás vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 35 / 47

Függvény hívása Relatív prím vizsgálat Bemenet: x egész tömb, n egész (tömb mérete), value egész Kimenet: y logikai tömb 1: függvény RelatívPrímVizsgálat(x, n, value) 2: y Létrehoz(logikai)[n] 3: ciklus i 1-től n-ig 4: ha LNKO(x[i], value) = 1 akkor 5: y[i] igaz 6: különben 7: y[i] hamis 8: elágazás vége 9: ciklus vége 10: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 36 / 47

Tartalom 1 Algoritmus fogalma 2 Változók, típusok és kifejezések 3 Tömbök 4 Vezérlési szerkezetek 5 Algoritmusok leírása pszeudokóddal 6 Hatékonyság, futási idő elemzése Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 37 / 47

Algoritmusokkal kapcsolatos elvárások Mikor jó egy algoritmus? Megbízható: Helyesen működik. Kiszámítható: Adott bemenet esetén mindig ugyanazt a kimenetet szolgáltatja. Egyszerű: Könnyen megérthető. Hatékony: Kevés memória igénye van. Kevés a futási ideje. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 38 / 47

Előadásra járó hallgatók számának meghatározása Hányan vannak itt a teremben? Hogyan tudnánk ezt hatékonyan megszámolni? Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 39 / 47

Szó keresése szótárban Hogyan tudunk hatékonyan szót keresni egy szótárban? Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 40 / 47

Algoritmus lépésszáma Egy algoritmus lépésszáma alatt azt értjük, hogy hány elemi műveletet (értékadás, összehasonĺıtás, stb.) kell végrehajtani adott bemenet mellett. Egy algoritmus futási ideje függ az algoritmust megvalósító programtól, a programozási nyelvtől, a számítógéptől, stb. Algoritmuselméletben a futási időt a lépésszámmal jellemezzük. Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 41 / 47

Futási idő Hány lépésben fut le az algoritmus? Bemenet: x egész tömb, n egész Kimenet: db egész 1: függvény NullátAdóElempárokSzáma(x, n) 2: db 0 3: ciklus i 1-től (n 1)-ig 4: ciklus j (i + 1)-től n-ig 5: ha x[i] + x[j] = 0 akkor 6: db db + 1 7: elágazás vége 8: ciklus vége 9: ciklus vége 10: vissza db 11: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 42 / 47

Futási idő Feltétel kiértékelések száma (n 1) + (n 2) +... + 2 + 1 = (n 1) + 1 2 (n 1) = n (n 1) 2 Értékadások száma Legjobb esetben: 0-szor Legrosszabb esetben: n(n 1) 2 -szer Algoritmus futási ideje O ( n 2) Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 43 / 47

Futási idő anaĺızisének fajtái Legrosszab eset anaĺızis T (n): a maximális futási idő, amely bármely n elemű sorozat esetén a rendezéshez legfeljebb szükséges Átlagos eset anaĺızis T (n): a várható futási idő, amely az n elemű sorozatok rendezéséhez szükséges Legjobb eset anaĺızis Magunkat verjük át, ha ezzel foglalkozunk Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 44 / 47

Futási idő Futási idők összehasonĺıtása 800 T (n) 600 400 200 9 100 n2 n log 2 n 0 0 20 40 60 80 100 n Nagy ordó jelölés Azt mondjuk, hogy a T (n) futási idő O (f (n))-es, ha létezik olyan c konstans, hogy elég nagy n értékek esetén T (n) c f (n). Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 45 / 47

Futási idő Gyakran előforduló nagyságrendek Futási idő nagyságrendje Futási idő nagyságrendjének elnevezése O(1) Konstans O(log n) Logaritmikus O(n) Lineáris O(n log n) Logaritmetikus O(n 2 ) Négyzetes O(n 3 ) Köbös O(2 n ) Exponenciális Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 46 / 47

Futási idő Gyakori nagyságrendek T (n) 6 5 4 3 2 1 0 20 40 60 80 100 n O(log n) Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 47 / 47

Futási idő Gyakori nagyságrendek T (n) 100 80 60 40 20 0 20 40 60 80 100 n O(log n) O(n) Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 47 / 47

Futási idő Gyakori nagyságrendek T (n) 600 500 400 300 200 100 0 20 40 60 80 100 n O(log n) O(n) O(n log n) Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 47 / 47

Futási idő Gyakori nagyságrendek T (n) 10,000 8,000 6,000 4,000 2,000 0 20 40 60 80 100 n O(log n) O(n) O(n log n) O(n 2 ) Sergyán (OE NIK) Programozás I. 2015. szeptember 7. 47 / 47