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,

Download Report

Transcript 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,

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:
 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
Számlálás
 Adott m..n intervallumon összeszámolja a béta
tulajdonságú elemeket
Számlálás példák




[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
Lineáris keresés
 Egy adott m..n intervallumon keresi az első béta
tulajdonságú elemet.
Lineáris keresés példák
 [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)
Eldönté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és 1 példák
 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é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és 2 példák
 [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?...
Maximum keresés
 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
Max. ker példák
 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
Minimum keresés
 Ugyanaz mint a max. ker., csak változónevek, és a
relációk cserelésével (az egyre kisebb elemeket
fogjuk keresni).
„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]
Maximum kiválasztásos rendezés
 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
Max. ker. kivál. példa
 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)
Buborék módszer
 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 algoritmusa
 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
Felhasznált irodalom
 Rendezéses algoritmusok
 Farkas Csaba.: Programozási ismeretek haladó
felhasználóknak
JOS, 2004
 Képek
 Fóthi Ákos.: Bevezetés a programozáshoz
ELTE Eötvös Kiadó, 2005
Elektronikus jegyzet