210 likes | 344 Views
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:
E N D
Ö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)!
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óknakJOS, 2004 • Képek • Fóthi Ákos.: Bevezetés a programozáshozELTE Eötvös Kiadó, 2005Elektronikus jegyzet