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

Hasonló dokumentumok
Összetett programozási tételek

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

Objektum Orientált Programozás VII.

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

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.

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

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

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

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

C# feladatok gyűjteménye

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

A C# programozási nyelv alapjai

Egyszerű programozási tételek

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

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

PROGRAMOZÁSI TÉTELEK

Programozási segédlet

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

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Bevezetés a programozásba I.

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

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

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

Felvételi tematika INFORMATIKA

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

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

Programozási alapismeretek 11. előadás

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

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

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

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

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

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

1. Jelölje meg az összes igaz állítást a következők közül!

INFORMATIKAI ALAPISMERETEK

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

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

Bevezetés az informatikába

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

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 képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Egyszerű programozási tételek

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

10. gyakorlat Tömb, mint függvény argumentum

Programozási alapismeretek 3. előadás

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

Térinformatikai algoritmusok Elemi algoritmusok

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

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

Programozás alapjai (ANSI C)

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

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

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

Objektumorientált Programozás VI.

AAO 3. Csink László 2007

Gyakorló feladatok az 1. nagy zárthelyire

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

A C# PROGRAMOZÁSI NYELV

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

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

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

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

Térinformatikai algoritmusok Elemi algoritmusok

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

Programozás Minta programterv a 2. házi feladathoz 1.

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

117. AA Megoldó Alfréd AA 117.

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

INFORMATIKA javítókulcs 2016

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

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

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

Informatika terméktervezőknek

.Net adatstruktúrák. Készítette: Major Péter

Java II. I A Java programozási nyelv alapelemei

AWK programozás, minták, vezérlési szerkezetek

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

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

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)

7. Strukturált típusok

Objektumorientált Programozás VI.

Mintavételes szabályozás mikrovezérlő segítségével

Webprogramozás szakkör

Programozás alapjai 9.Gy: Struktúra 2.

Smalltalk 2. Készítette: Szabó Éva

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

1. Alapok. Programozás II

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

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

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.

BME MOGI Gépészeti informatika 5.

Átírás:

IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68

TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma Procedurális paradigma Generikus paradigma III. STRUKTÚRÁLT PROGRAMOZÁS Moduláris paradigma Objektumorientált paradigma 2014 Bánsághi Anna 2 of 68

II. IMPERATÍV PROGRAMOZÁS IMPERATÍV PARADIGMA 1. Jelkészlet 2. Lexikális elemek 3. Utasítások, vezérlési szerkezetek 4. Elemi és összetett típusok 5. Programozási tételek 6. Adatfolyamok kezelése 2014 Bánsághi Anna 3 of 68

5. PROGRAMOZÁSI TÉTELEK általánosságban megfogalmazott algoritmusok, kicsit átalakítjuk a konkrét feladatunkhoz tételek, mert formálisan bizonyítható a helyességük 2014 Bánsághi Anna 4 of 68

FELADATOSZTÁLYOK CSOPORTOSÍTÁSA egy bemeneti sorozathoz egyetlen értéket rendel egy bemeneti sorozathoz egy kimeneti sorozatot rendel egy bemeneti sorozathoz több kimeneti sorozatot rendel több bemeneti sorozathoz egy kimeneti sorozatot rendel egy bemeneti sorozat rendezése 2014 Bánsághi Anna 5 of 68

EGY BEMENETI SOROZATHOZ EGYETLEN ÉRTÉKET 2014 Bánsághi Anna 6 of 68

ÖSSZEGZÉS - FELADAT adjuk meg n darab tetszőleges természetes szám összegét adjuk meg az első n természetes szám szorzatát (n!) adjuk meg n darab tetszőleges szám átlagát fűzzünk össze n darab karaktert egy szöveg típusú változóba 2014 Bánsághi Anna 7 of 68

bemenet, kimenet ÖSSZEGZÉS - SPECIFIKÁCIÓ x : T n F : T y : T T n előfeltétel n 0, y 0 : T neutrális elem T -ben és hogy f : T T T F( x 1,, x n ) = f(f( x 1,, x n 1 ), x n ) utófeltétel y = F( x 1,, x n ) 2014 Bánsághi Anna 8 of 68

ÖSSZEGZÉS - ALGORITMUS y = y 0 ciklus i = 1-től n-ig y = f(y, x ) ciklus vége i 2014 Bánsághi Anna 9 of 68

ÖSSZEGZÉS - FORRÁSKÓD adjuk meg n darab tetszőleges természetes szám összegét public static void Main() { int[] x = new int[] { 1, 3, 6, 10, 15 ; int y = 0; foreach( int i in x ) { y += i; Console.WriteLine( y ); 2014 Bánsághi Anna 10 of 68

SZÁMLÁLÁS - FELADAT számoljuk meg, hogy egy számnak hány osztója van adjuk meg, hogy egy bitsorozat hányszor vesz fel 1-es értéket adjuk meg egy szöveg magánhangzóinak számát számoljuk meg, hogy hány e betű van egy szövegben 2014 Bánsághi Anna 11 of 68

SZÁMLÁLÁS - SPECIFIKÁCIÓ bemenet, kimenet előfeltétel utófeltétel x : T n darab : T n 0 F : T L darab = F( ) n i=1 F( )=igaz x i x i 2014 Bánsághi Anna 12 of 68

SZÁMLÁLÁS - ALGORITMUS darab = 0 ciklus i = 1-től n-ig ha F(x ) akkor darab += 1 elágazás vége ciklus vége i 2014 Bánsághi Anna 13 of 68

SZÁMLÁLÁS - FORRÁSKÓD adjuk meg, hogy egy bitsorozat hányszor vesz fel 1-es értéket public static void Main() { string s = "00011101011"; int darab = 0; foreach( char c in s ) { if( '1' == c ) { darab += 1; Console.WriteLine( darab ); 2014 Bánsághi Anna 14 of 68

SZÉLSŐÉRTÉK KIVÁLASZTÁS - FELADAT adjuk meg n darab tetszőleges természetes szám minimális / maximális elemét adjuk meg n darab tetszőleges karakter közül az ábécé szerinti elsőt / utolsót adjuk meg n darab tetszőleges karakterlánc közül az ábécé szerinti elsőt / utolsót 2014 Bánsághi Anna 15 of 68

MAXIMUM KIVÁLASZTÁS - SPECIFIKÁCIÓ bemenet, elemei rendezhetők (< > összehasonlítások megengedett műveletek) kimenet előfeltétel utófeltétel x : T n T maximum : T n 1 x i x : maximum x i 2014 Bánsághi Anna 16 of 68

MAXIMUM KIVÁLASZTÁS - ALGORITMUS maximum = x ciklus i = 2-től n-ig ha maximum < x maximum = x elágazás vége ciklus vége 1 i i akkor 2014 Bánsághi Anna 17 of 68

MAXIMUM KIVÁLASZTÁS - FORRÁSKÓD adjuk meg n darab tetszőleges sztring közül az ábécé szerinti utolsót public static void Main() { string[] szavak = new string[] { "eper", "körte", "alma" ; string maximum = szavak[0]; for( int i = 1; i < szavak.length; ++i ) { if( String.Compare( maximum, szavak[i] ) < 0 ) { maximum = szavak[i]; Console.WriteLine( maximum ); 2014 Bánsághi Anna 18 of 68

FELTÉTELES SZÉLSŐÉRTÉK KIVÁLASZTÁS - FELADAT adjuk meg n darab tetszőleges természetes szám minimális / maximális elemét azon elemek közül, melyekre teljesül egy bizonyos feltétel 2014 Bánsághi Anna 19 of 68

FELTÉTELES MAXIMUM KIVÁLASZTÁS - SPECIFIKÁ CIÓ bemenet,, elemei rendezhetők (< > összehasonlítások megengedett műveletek) kimenet előfeltétel utófeltétel x : T n maximum : T n 0 F : T L T x i x, F( x i ) = igaz : maximum x i 2014 Bánsághi Anna 20 of 68

FELTÉTELES MAXIMUM KIVÁLASZTÁS - ALGORITMUS teljesül = hamis ciklus i = 1-től n-ig ha nem F(x ) akkor continue i ha teljesül akkor ha maximum < x maximum = x elágazás vége különben teljesül = igaz maximum = x elágazás vége ciklus vége i i i akkor 2014 Bánsághi Anna 21 of 68

FELTÉTELES MAXIMUM KIVÁLASZTÁS - FORRÁSKÓD adjuk meg n darab tetszőleges sztring közül azt, amelyik e betűvel kezdődik, és első az e betűvel kezdődők között public static void Main() { string[] szavak = new string[] { "eper", "körte", "egres", "alma" ; string maximum = ""; bool teljesul = false; foreach( string szo in szavak ) { if(! szo.startswith("e")) continue; if( teljesul ) { if( String.Compare( maximum, szo ) > 0 ) { maximum = szo; else { teljesul = true; maximum = szo; Console.WriteLine( maximum ); 2014 Bánsághi Anna 22 of 68

ELDÖNTÉS (LÉTEZIK) - FELADAT döntsük el egy számról, hogy prím-e döntsük el n tetszőleges számról, hogy van-e köztük páros döntsük el n tetszőleges karakterláncról, hogy van-e köztük üres 2014 Bánsághi Anna 23 of 68

ELDÖNTÉS (LÉTEZIK) - SPECIFIKÁCIÓ bemenet, kimenet előfeltétel utófeltétel x : T n létezik : L n 0 F : T L létezik = ( i [1..n] : F( x i ) = igaz) 2014 Bánsághi Anna 24 of 68

ELDÖNTÉS (LÉTEZIK) - ALGORITMUS i = 1 ciklus amíg i n és nem F(x ) ++i ciklus vége létezik = (i n) i 2014 Bánsághi Anna 25 of 68

ELDÖNTÉS (LÉTEZIK) - FORRÁSKÓD döntsük el n tetszőleges számról, hogy van-e köztük páros public static void Main() { int[] szamok = new int[] { 1, 2, 3, 4 ; int i = 0; while( i < szamok.length && szamok[i] % 2!= 0 ) { ++i; bool letezik = (i < szamok.length ); Console.WriteLine( letezik ); 2014 Bánsághi Anna 26 of 68

ELDÖNTÉS (MINDEGYIK) - FELADAT döntsük el n tetszőleges számról, hogy mind páros-e döntsük el n tetszőleges számról, hogy monoton növekedő sorrendben vannak-e döntsük el egy tetszőleges karaktersorozatról, hogy ábécé sorrendbe rendezett-e 2014 Bánsághi Anna 27 of 68

ELDÖNTÉS (MINDEGYIK) - SPECIFIKÁCIÓ bemenet, kimenet előfeltétel utófeltétel x : T n F : T L mindegyik : L n 0 mindegyik = ( i [1..n] : F( x i ) = igaz) 2014 Bánsághi Anna 28 of 68

ELDÖNTÉS (MINDEGYIK) - ALGORITMUS i = 1 ciklus amíg i n és F(x ) ++i ciklus vége mindegyik = (i > n) i 2014 Bánsághi Anna 29 of 68

ELDÖNTÉS (MINDEGYIK) - FORRÁSKÓD döntsük el n tetszőleges számról, hogy mind páros-e public static void Main() { int[] szamok = new int[] { 1, 2, 3, 4 ; int i = 0; while( i < szamok.length && szamok[i] % 2 == 0 ) { ++i; bool mindegyik = (i >= szamok.length ); Console.WriteLine( mindegyik ); 2014 Bánsághi Anna 30 of 68

LINEÁRIS KERESÉS - FELADAT adjuk meg egy szám első valódi osztóját keressük ki n tetszőleges szám közül az első párosat keressük ki n tetszőleges karakterlánc közül az első üreset 2014 Bánsághi Anna 31 of 68

bemenet, LINEÁRIS KERESÉS - SPECIFIKÁCIÓ kimenet és előfeltétel x : T n F : T L létezik L index 0 n 0 utófeltétel létezik = ( i [1..n] : F( x i ) = igaz) és létezik (index [1..n] F( x index ) = igaz) 2014 Bánsághi Anna 32 of 68

LINEÁRIS KERESÉS - ALGORITMUS i = 1 ciklus amíg i n és nem F(x ) ++i ciklus vége létezik = (i n) i ha létezik akkor index = i 2014 Bánsághi Anna 33 of 68

LINEÁRIS KERESÉS - FORRÁSKÓD adjuk meg egy szám legkisebb valódi osztóját public static void Main() { int szam = 8; int oszto = 2; while( oszto < szam && szam % oszto!= 0 ) { ++oszto; bool letezik = (oszto < szam ); if( letezik ) { Console.WriteLine( oszto ); 2014 Bánsághi Anna 34 of 68

EGY BEMENETI SOROZATHOZ EGY KIMENETI SOROZATOT 2014 Bánsághi Anna 35 of 68

MÁSOLÁS - FELADAT adott egy karakterlánc, cseréljük le az összes magánhangzót e betűre tetszőleges tömb bizonyos tulajdonságú elemeit cseréljük le egy másik elemre 2014 Bánsághi Anna 36 of 68

MÁSOLÁS - SPECIFIKÁCIÓ bemenet, kimenet előfeltétel utófeltétel x : T n y : T n n 0 F : T T i [1..n] : y i = F( x i ) 2014 Bánsághi Anna 37 of 68

MÁSOLÁS - ALGORITMUS ciklus i = 1-től n-ig y = F(x ) i ciklus vége i 2014 Bánsághi Anna 38 of 68

MÁSOLÁS - FORRÁSKÓD adott egy karakterlánc sorozat, alakítsuk át nagybetűsre a szavakat public static void Main() { string[] nevek = new string[] { "Bence", "Brigi" ; for( int i = 0; i < nevek.length; ++i ) { nevek[i] = nevek[i].toupper(); foreach( string nev in nevek ) { Console.WriteLine( nev ); 2014 Bánsághi Anna 39 of 68

KIVÁLOGATÁS - FELADAT adott n tetszőleges szám, válogassuk ki a negatívakat adott egy karakterlánc, válogassuk ki a magánhangzókat tetszőleges tömb bizonyos tulajdonságú elemeit tegyük egy másik tömbbe 2014 Bánsághi Anna 40 of 68

bemenet, kimenet és előfeltétel KIVÁLOGATÁS - SPECIFIKÁCIÓ x : T n m 0 n 0 F : T L y : T m n utófeltétel m = (F( x i ) = igaz) és y x és i=1 j [1..m] : F( y j ) = igaz 2014 Bánsághi Anna 41 of 68

KIVÁLOGATÁS - ALGORITMUS m = 0 ciklus i = 1-től n-ig ha F(x ) akkor i ++m y = x m elágazás vége ciklus vége i 2014 Bánsághi Anna 42 of 68

KIVÁLOGATÁS - FORRÁSKÓD adott egy szó, válogassuk ki a magánhangzókat public static void Main() { const string maganhangzok = "aáeéiíoóöőuúüű"; string szo = "patakhíd"; string mghbetuk = ""; foreach( char betu in szo ) { if( maganhangzok.contains( Char.ToString( Char.ToLowerInvariant( betu )))) { mghbetuk += betu; Console.WriteLine( mghbetuk ); 2014 Bánsághi Anna 43 of 68

EGY BEMENETI SOROZATHOZ TÖBB KIMENETI SOROZATOT 2014 Bánsághi Anna 44 of 68

SZÉTVÁLOGATÁS - FELADAT adott n tetszőleges szám, válogassuk szét a párosakat és a páratlanokat adott n tetszőleges dátum, válogassuk szét ezeket a hét napjainak megfeleően tetszőleges tömb elemeit válogassuk szét valamely tulajdonság alapján 2014 Bánsághi Anna 45 of 68

bemenet, kimenet előfeltétel és SZÉTVÁLOGATÁS - SPECIFIKÁCIÓ x : T n F : T { u 1, u 2,, u s k [1..s] : m k 0, y k : T m k n 0 s 1 n utófeltétel k [1..s] : m k = (F( x i ) = u k ) és y k x és i=1 j [1.. m k ] : F( y j ) = u k 2014 Bánsághi Anna 46 of 68

SZÉTVÁLOGATÁS - ALGORITMUS m1, m2,..., ms = 0 ciklus i = 1-től n-ig szelekció F(x ) alapján eset u1 ++m1 eset u2... y1 = x ++m2 y2 = x eset us ++ms ys = x szelekció vége ciklus vége m_1 m_2 m_s i i i i 2014 Bánsághi Anna 47 of 68

bemenet, SZÉTVÁLOGATÁS - SPECIFIKÁCIÓ S = 2 kimenet és és előfeltétel x : T n F : T L m 1, m 2 0 y 1 : T m 1 y 2 : T m 2 n 0 n utófeltétel m 1 = (F( x i ) = igaz) és y 1 x és i=1 j 1 [1.. m 1 ] : F( y j1 n = igaz) és m 2 = ( F( x i ) = hamis) és y 2 x és i=1 j 2 [1.. m 2 ] : F( y j2 = hamis) 2014 Bánsághi Anna 48 of 68

SZÉTVÁLOGATÁS - ALGORITMUS S = 2 m1, m2 = 0 ciklus i = 1-től n-ig ha F(x ) akkor i ++m1 y1 = x m1 különben ++m2 y2 = x m2 elágazás vége ciklus vége i i 2014 Bánsághi Anna 49 of 68

TÖBB BEMENETI SOROZATHOZ EGY KIMENETI SOROZATOT 2014 Bánsághi Anna 50 of 68

METSZET - FELADAT adott két tetszőleges számsorozat, adjuk meg a közös elemeket adott két vagy több halmaz, adjuk meg a metszetüket 2014 Bánsághi Anna 51 of 68

bemenet METSZET - SPECIFIKÁCIÓ x k : T n k (k [1..s]) m 0 kimenet és y : T m előfeltétel és s 2 k [1..s] : 0 utófeltétel és n k m = x k j [1..m] : 1 k s y j 1 k s x k 2014 Bánsághi Anna 52 of 68

METSZET - ALGORITMUS S = 2 m = 0 ciklus i = 1-től n1-ig j = 1 ciklus amíg j n ++j ciklus vége ha j < n2 akkor ++m y = x m elágazás vége ciklus vége i és x1 x2 2 i j 2014 Bánsághi Anna 53 of 68

UNIÓ - FELADAT adott két vagy több halmaz, adjuk meg az egyesítésüket 2014 Bánsághi Anna 54 of 68

bemenet UNIÓ - SPECIFIKÁCIÓ x k : T n k (k [1..s]) m 0 kimenet és y : T m előfeltétel és s 2 k [1..s] : 0 utófeltétel és n k m = x k j [1..m] : 1 k s y j 1 k s x k 2014 Bánsághi Anna 55 of 68

UNIÓ - ALGORITMUS S = 2 y = x1 m = n1 ciklus j = 1-től n2-ig i = 1 ciklus amíg i n1 és x1 x2 ++i ciklus vége ha i > n1 akkor ++m y = y m elágazás vége ciklus vége j i j 2014 Bánsághi Anna 56 of 68

SOROZATOK RENDEZÉSE 2014 Bánsághi Anna 57 of 68

RENDEZÉS - FELADAT rendezzük sorba egy n elemű sorozat elemeit 2014 Bánsághi Anna 58 of 68

bemenet kimenet x : T n y : T n n 0 RENDEZÉS - SPECIFIKÁCIÓ T előfeltétel és elemei rendezhetők (< > összehasonlítások megengedett műveletek) y P ermutáció(x) utófeltétel és Rendezett(y) 2014 Bánsághi Anna 59 of 68

HATÉKONYSÁG több - hatékonyságában eltérő - rendezési algoritmus létezik az algoritmusok összehasonlíthatók tárigény (a rendezésben részt vevő tárolóhelyek száma), valamint végrehajtási idő (hasonlítások száma, mozgatások száma) szerint 2014 Bánsághi Anna 60 of 68

CSERÉS RENDEZÉS hasonlítsuk össze az első elemet a mögötte levő többi elemmel, és ha valamelyik kisebb nála, akkor cseréljük meg azzal ciklus i = 1-től n-1-ig ciklus j = i+1-től n-ig ha x > x akkor Csere( x, x ) ciklus vége ciklus vége i j i j 2014 Bánsághi Anna 61 of 68

CSERÉS RENDEZÉS rendezzük nagyság szerint növekedő sorba egy n elemű számsorozat elemeit public static void Main() { int[] szamok = new int[] { 3, 2, 5, 1, 3, 6, 4 ; int tmp; for( int i = 0; i < szamok.length-1; ++i ) { for( int j = i+1; j < szamok.length; ++j ) { if( szamok[i] > szamok[j] ) { tmp = szamok[i]; szamok[i] = szamok[j]; szamok[j] = tmp; 2014 Bánsághi Anna 62 of 68

MAXIMUM KIVÁLASZTÁSOS RENDEZÉS hasonlítsuk egymással a szomszédos elemeket, és ha a sorrendjük nem jó, akkor cseréljük meg őket ciklus i = n-től 2-ig -1-esével max = 1 ciklus j = 2-től i-ig ha x > x akkor max = j ciklus vége Csere( x, x ) ciklus vége max i max j www.sorting-algorithms.com/selection-sort 2014 Bánsághi Anna 63 of 68

MAXIMUM KIVÁLASZTÁSOS RENDEZÉS rendezzük nagyság szerint növekedő sorba egy n elemű számsorozat elemeit public static void Main() { int[] szamok = new int[] { 3, 2, 5, 1, 3, 6, 4 ; int tmp; for( int i = szamok.length-1; i > 0; --i ) { int max = 0; for( int j = 1; j <= i; ++j ) { if( szamok[max] < szamok[j] ) { max = j; tmp = szamok[i]; szamok[i] = szamok[max]; szamok[max] = tmp; 2014 Bánsághi Anna 64 of 68

NAÍV BUBORÉKOS RENDEZÉS hasonlítsuk össze az első elemet a mögötte levő többi elemmel, de azok közül csak a legkisebbel cseréljük meg ciklus i = n-től 2-ig -1-esével ciklus j = 1-től i-1-ig ha x > x akkor Csere( x, x ) ciklus vége ciklus vége j j+1 j j+1 www.sorting-algorithms.com/bubble-sort 2014 Bánsághi Anna 65 of 68

NAÍV BUBORÉKOS RENDEZÉS rendezzük nagyság szerint növekedő sorba egy n elemű számsorozat elemeit public static void Main() { int[] szamok = new int[] { 3, 2, 5, 1, 3, 6, 4 ; int tmp; for( int i = szamok.length-1; i > 0; --i ) { for( int j = 0; j < i; ++j ) { if( szamok[j] > szamok[j+1] ) { tmp = szamok[j]; szamok[j] = szamok[j+1]; szamok[j+1] = tmp; 2014 Bánsághi Anna 66 of 68

NAÍV BESZÚRÓ RENDEZÉS ha van egy rendezett részsorozatunk, akkor abba a nagyság szerinti helyére illesszük be a soron következő elemet ciklus i = 2-től n-ig j = i - 1 ciklus amíg j > 0 és x > x --j ciklus vége ciklus vége Csere( x, x ) j j+1 j j+1 www.sorting-algorithms.com/insertion-sort 2014 Bánsághi Anna 67 of 68

NAÍV BESZÚRÓ RENDEZÉS rendezzük nagyság szerint növekedő sorba egy n elemű számsorozat elemeit public static void Main() { int[] szamok = new int[] { 3, 2, 5, 1, 3, 6, 4 ; int tmp; int j; for( int i = 0; i < szamok.length-1; ++i ) { j = i; while( j >= 0 && szamok[j] > szamok[j+1] ) { tmp = szamok[j]; szamok[j] = szamok[j+1]; szamok[j+1] = tmp; --j; 2014 Bánsághi Anna 68 of 68