21
Programozási tételek, és „négyzetes” rendezések

Programozási tételek, és „négyzetes” rendezések

  • Upload
    bayle

  • View
    39

  • Download
    2

Embed Size (px)

DESCRIPTION

Programozási tételek, és „négyzetes” rendezések. Összegzés. Egy adott m..n intervallumon, tetszőleges f függvényre. Összegzés példa. Legyen adott az [1, 0, 3, 4, 5, -1, 2] vektor, f(i) pedig jelentse az i. indexű vektor értéket. (i = 1..7) Ekkor az összegzés eredménye: - PowerPoint PPT Presentation

Citation preview

Page 1: Programozási tételek, és „négyzetes” rendezések

Programozási tételek,és „négyzetes”

rendezések

Page 2: Programozási tételek, és „négyzetes” rendezések

Egy adott m..n intervallumon, tetszőleges f függvényre

Összegzés

Page 3: Programozási tételek, és „négyzetes” rendezések

Legyen adott az [1, 0, 3, 4, 5, -1, 2] vektor, f(i) pedig jelentse az i. indexű vektor értéket.(i = 1..7)

Ekkor az összegzés eredménye: s = 1 + 0 + 3 + 4 + 5 + (-1) + 2 = 14 Tetszőleges f függvény megadható, aminek

paramétere az elemek indexe. Pl. legyen f(i) = i. Mindenképp elmegy az interval. végéig

Összegzés példa

Page 4: Programozási tételek, és „négyzetes” rendezések

Adott m..n intervallumon összeszámolja a béta tulajdonságú elemeket

Számlálás

Page 5: Programozási tételek, és „négyzetes” rendezések

[1, 0, 3, 4, 5, -1, 2] vektor Legyen Béta(k) = Béta(vektor(k)) Egyértelmű példa: a vektor elemszáma: d = 7 Tetszőleges béta tulajdonság megadása,

pl. béta = nem negatív számok (poz. vagy nulla), ekkor d = 6

vagy béta = pozitív számok (nulla kivétel) ekkor d = 7 – 2 = 5

Mindenképp „elteker” az intervallum végéig

Számlálás példák

Page 6: Programozási tételek, és „négyzetes” rendezések

Egy adott m..n intervallumon keresi az első béta tulajdonságú elemet.

Lineáris keresés

Page 7: Programozási tételek, és „négyzetes” rendezések

[1, 0, 3, 4, 5, -1, 2] vektor, Legyen, béta(i) = béta(vektor(i)) Továbbá, például béta legyen igaz, hogyha negatív elem az

argumentuma. Ekkor a keresés idáig jut, és itt leáll:

[1, 0, 3, 4, 5, -1, 2]

Ha nem lenne ilyen tul. elem, a végén állna meg. Futási ideje n-es, ha az n. elem a megtalált elem. Előny: egyszerű implementáció, gyakran használatos Hátrány: (n lehet nagyon nagy, pl. 1 millió/milliárd)

Lineáris keresés példák

Page 8: Programozási tételek, és „négyzetes” rendezések

Eldöntés 1: Ugyanaz mint a lineáris keresés, de nem adja vissza a talált (i) indexet, csak hogy létezik-e béta tulajdonságú elem.

Eldöntések

Page 9: Programozási tételek, és „négyzetes” rendezések

Tehát ahelyett hogy „igen van ilyen elem, és ez a nyolcadik” (lineáris keresés),

Az eldöntés csak ennyit válaszol: „igen, van ilyen elem”.

Eldöntés 1 példák

Page 10: Programozási tételek, és „négyzetes” rendezések

Eldöntés 2: Végig ellenőrzi hogy mindegyik elem ilyen béta tulajdonságú-e. Tehát kötelezően végigmegy az összes elemen, nem áll le előbb.

Eldöntések

Page 11: Programozási tételek, és „négyzetes” rendezések

[1, 0, 3, 4, 5, -1, 2] vektor, Legyen, béta(i) = béta(vektor(i)) Eldöntési kérdés vagyis béta tulajdonság pl.:

Az összes elem pozitív-e? Futás végén: nem Az összes érték negatív-e? .. Az összes érték természetes szám?...

Eldöntés 2 példák

Page 12: Programozási tételek, és „négyzetes” rendezések

Megtalálja a maximumnak definiált elemet

Gyakori hiba lehetőség: a kezdőelem elrontása. Ez mindig legyen az első elem (nem egy kitalált)!

Maximum keresés

Page 13: Programozási tételek, és „négyzetes” rendezések

Maximum keresés

Page 14: Programozási tételek, és „négyzetes” rendezések

Legyen adott az [1, 0, 3, 4, 5, -1, 2] vektor, f(i) pedig jelentse az i. indexű vektor értéket.(i = 1..7)

Indulás: az első max. elem (f(m)) = 1 Eredmény: A megtalált maximum: 5 Mindig végigmegy az egész intervallumon

Max. ker példák

Page 15: Programozási tételek, és „négyzetes” rendezések

Ugyanaz mint a max. ker., csak változónevek, és a relációk cserelésével (az egyre kisebb elemeket fogjuk keresni).

Minimum keresés

Page 16: Programozási tételek, és „négyzetes” rendezések

Négyzetes -> n^2 futás idejű rendezések Amik nem a legjobbak (ami n, vagy logn), de

széles körben elterjedtek, ismertek és oktatottak.

Persze nagyon nagy számosságú adatot nem ezekkel célszerű rendezni

Cél: például adott számsorokat rendezni [1, 4, 8, 2, -1, 0] -> [-1, 0, 1, 2, 4, 8]

„Négyzetes” rendezések

Page 17: Programozási tételek, és „négyzetes” rendezések

Eljárás Rendezés maximumkiválasztással Ciklus j = n-től 2-ig

MaxKer(az első j elemben) Csere(v(j), maxh)

Ciklus vége Eljárás vége

Maximum kiválasztásos rendezés

Page 18: Programozási tételek, és „négyzetes” rendezések

Kiindulás: [1, 4, 8, 2, -1, 0] j = n, és n most 6. Tehát (j = 6) –tól 2-ig

megyünk. MaxKer az első j=6 (az összes) elemben:

Maximum= 8, csere v(j=6) <-> max=8 [1, 4, 0, 2, -1, 8], továbbá legyen j = 5… [1, -1, 0, 2, 4, 8], továbbá j = 4… [1, -1, 0, 2, 4, 8], itt a csere felesleges is… …. -> Eredmény előbb-utóbb: [-1, 0, 1, 2, 4, 8] (az aláhúzás a futási területet jelöli)

Max. ker. kivál. példa

Page 19: Programozási tételek, és „négyzetes” rendezések

Lényege: mindig „felbuborékoltatjuk” a legalsó elemeket a megfelelő helyre (például ha az első a legnagyobb elem, azt a vektor végére)

[8, 4, 1, 2, -1, 0] [4, 1, 2, -1, 0, 8] Majd újrakezdjük a cserélgetést, de mostmár

elég a legutolsó elem előtt egyel megállni (mert az a legnagyobb)

[4, 1, 2, -1, 0, 8] [1, 2, -1, 0, 4, 8] (aláhúzás hasonlóan mint előbb)

Buborék módszer

Page 20: Programozási tételek, és „négyzetes” rendezések

Eljárás Buborékrendezés Ciklus i = n-től 2-ig, -1-esével

Ciklus j = 1-től i-1 –ig Ha v(j) > v(j+1) akkor Csere(v(j), v(j+1))

Ciklus vége Ciklus vége

Eljárás vége

Buborék módszer algoritmusa

Page 21: Programozási tételek, és „négyzetes” rendezések

Rendezéses algoritmusok Farkas Csaba.: Programozási ismeretek haladó

felhasználóknakJOS, 2004

Képek Fóthi Ákos.: Bevezetés a programozáshoz

ELTE Eötvös Kiadó, 2005Elektronikus jegyzet

Felhasznált irodalom