Download - Gombkötő Attila
Gombkötő Attila
Lineáris egyenlet
Információtartalom vázlata
• Információkezelés alapfogalmai– Rendezett tömb felosztása egyenlő részekre
• Számhalmazok– Adatok esetleges rendezése a tömbben
• Boole algebra– Összehasonlításos keresés
A programozási tételek
• A programozási tételeket azért dolgozták ki, hogy a típusfeladatok megoldásához ne kelljen a programozónak újra és újra kitalálnia a módszert.
• A keresési probléma megoldásához nyilván a keresési algoritmusok közül választunk.
Keresési algoritmusok:
• Lineáris keresés tétele• Logaritmikus keresés tétele• A rendezetlen tömbben való kereséshez a lineáris keresés tételét
használjuk.• Amennyiben a logaritmikus keresést akarjuk használni, előbb sorba
kell rendeznünk a tömböt.• A tömbök rendezéséhez különböző rendezési algoritmusokat
használhatunk:• Rendezés közvetlen kiválasztással;• Rendezés minimum kiválasztással;• Buborékos rendezés;• Egyszerű beillesztéses rendezés•
Lineáris keresés tétele
• Adott egy N elemű sorozat, és egy, a sorozat elemein értelmezett T tulajdonság. Kérdés: van-e T tulajdonságú elem a sorozatban, és ha van, akkor mi a sorszáma. (Eldöntés és kiválasztás tétele együtt.)
Eljárás:
I:=1
Ciklus amíg I<=N és A(I) nem T tulajdonságú
I:=I+1
Ciklus vége
VAN:=I<=N
Ha VAN akkor SORSZ:=I
Eljárás vége.
Előny és hátrány
• Előnye:• A lineáris keresés egyszerű, áttekinthető algoritmus. • Hátránya: • Alacsony hatékonyságú, lassú algoritmus;• A keresés ideje nyilván attól függ, hogy hányadik helyen van a keresett
elem;• Legjobb esetben az első helyen van, ilyenkor egyből, egy lépés után
megtaláljuk;• Legrosszabb esetben az utolsó helyen van, ilyenkor az N. lépésnél találjuk
meg;• Átlagosan tehát (N+1)/2 lépés után találjuk meg a keresett elemet;• A keresési idő láthatóan egyenesen arányos a tömb elemeinek számával;• Ráadásul sikertelen kereséskor is végig kell járni az egész tömböt, ez sok i
PROGRAMOZÁSI TÉTELEKKOVÁCS DÁVID
A programozási tételek
• A programozási tételeket azért dolgozták ki, hogy a típusfeladatok megoldásához ne kelljen a programozónak újra és újra kitalálnia a módszert.
• A keresési probléma megoldásához a keresési algoritmusok közül választunk.
Keresési algoritmusok
• Lineáris keresés tételeA rendezetlen tömbben való kereséshez használjuk.
• Logaritmikus keresés tételeItt előbb sorba kell rendezni a tömböt, vagy az eredetileg is sorba rendezett tömbnél alkalmazzuk.
Algoritmusok a tömbök rendezéséhez
• Rendezés közvetlen kiválasztással• Rendezés minimum kiválasztással• Buborékos rendezés• Egyszerű beillesztéses rendezés
Logaritmikus keresés tétele
Adott egy N elemű rendezett sorozat, illetve egy keresett elem (X). Kérdés: szerepel-e a keresett elem a sorozatban, és ha igen, akkor mi a sorszáma. Kihasználjuk, hogy a sorozat rendezett, így el tudjuk dönteni, hogy a keresett elem az éppen vizsgált elemhez képest hol helyezkedik el.Alsó, Felső: intervallum alsó és felső végpontjai.
Eljárás
Eljárás:
A:=1
F:=N
Ciklus
I:=INT((A+F)/2)
Ha B(I)<X akkor A:=I+1
Ha B(I)>X akkor F:=I-1
amíg A<=F és B(I)<>X (amíg A>F vagy B(I) = X)
Ciklus vége
VAN:=A<=F
Ha VAN akkor SORSZ:=I
Eljárás vége.
Menete• Rendelkezésre áll egy N elemű növekvő sorrendbe
rendezett (!!!!!) sorozat és egy keresett elem (X). Olyan algoritmust kell írni, amely eldönti, hogy szerepel-e a keresett elem a sorozatban, s ha igen, akkor megadja a sorszámot.
• Kihasználjuk, hogy a sorozat rendezett. Ez alapján bármely elemről el tudjuk dönteni, hogy a keresett elem előtte vagy utána van-e, esetleg megtaláltuk. Az eljárás lényegének megértéséhez tudni kell, hogy az A és az F változóknak kiemelt szerepük van: mindig annak a részintervallumnak az alsó és felső végpontjai, amelyben a keresett elem benne van.
Eljárás folyamatábrában
Előnye
• Sokkal hatékonyabb, gyorsabb keresési mód, mint a lineáris keresés.
• Azért hívják logaritmikus keresésnek, mert a ciklus lépésszáma kb. log N
• A tömb rendezett, először meg kell nézni, hogy melyik részén található a keresett elem.
• Ha az elem a középsőnél nagyobb, a keresést elég a középső elem utáni részen folytatni.
• Ha az elem a középsőnél kisebb, a keresést elég a középső rész előtti részen folytatni.
Hátrány
Bonyolult algoritmus!
KÖSZÖNÖM A FIGYELMET!