Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaFlóra Némethné Megváltozta több, mint 10 éve
1
Egydimenziós tömbök
2
Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév: típusnév; Beolvasás: {n – elemek száma X – a vektorunk neve} write(‘n=‘); readln(n); for i:=1 to n do begin write(‘x[‘,I,’]=‘); readln(x[i]); end; Kiírás: writeln(‘n=‘,n); for i:=1 to n do write(x[i],’ ‘); writeln;
3
Elemi algoritmusok vektorokkal 1. Keresések –1.1. Lineáris (szekvenciális) –1.2. Bináris 2. Rendezések –2.1. Buborékos –2.2. Minimumkereséses –2.3. Beszúrásos 3. Elem törlése 4. Elem beszúrása 5. Összefésülés
4
1.1. Lineáris (vagy szekvenciális) keresés Feladat: Adott egy n elemű, egész számokat tartalmazó x sorozat és egy k elem. Határozzuk meg, hogy a k elem benne van-e az x sorozatban! A lineáris keresés lényege, hogy végigjárjuk az x sorozatot és minden x[i] elemet összehasonlítunk a k-val. Az algoritmusnak két esetben van vége: Ha x[i]=k, vagyis megtaláltuk a keresett elemet. Ha i=n+1, vagyis végigjártuk a sorozatot és nem találtuk meg a keresett k elemet.
5
Vegyünk egy példát: n=7, x=(5, 6, 9, 13, 45, 3, 15) és k=13, majd k=17 13 569 45315 x[1]x[2]x[3]x[4]x[5]x[6]x[7] Megtaláltuk a keresett számot! Tehát nem szükséges továbbmenni. 17 A vektor végére értünk anélkül, hogy megtaláltuk volna a keresett számot. Tehát nincsen meg.
6
A lineáris keresés algoritmusa Algoritmus linearis_kereses Be: n; x i,ahol i:=1,n; k megvan hamis i 1 Amíg (i<=n) és nem megvan végezd el Ha x[i]=k akkor megvan igaz (Ha) vége i i+1 (Amíg)vége Ha megvan akkor Ki: ‘benne van’ különben Ki: ‘nincsen benne’ (Ha)vége Algoritmus vége Kezdetben feltételezzük, h nincsen meg amit keresünk. A keresést az első elemtől kezdjük. Keressük amíg a végére érünk......vagy megta- láltuk. Ha megtaláltuk... „Megyünk” a következő elemhez. Kiírjuk a megoldást.
7
1.2. Bináris keresés Ugyanaz a feladat: Adott egy n elemű, egész számokat tartalmazó x sorozat és egy k elem. Határozzuk meg, hogy a k elem benne vane az x sorozatban! A bináris keresés lényege, hogy a k elemet az x sorozatot középső eleméhez hasonlítjuk és a hasonlítás eredményétől függően folytatjuk a keresést középtől balra, vagy jobbra. Ez az algoritmus, CSAK rendezett sorozat esetén alkalmazható!
8
7=7 tehát MEGTALÁLTUK a keresett elemünket. Vegyünk egy példát: n=13, x=(1,3,4,5,7,9,10,11,15,16,16,18,20) és k=7 X[1]X[2]X[3]X[4]X[5]X[6]X[7]X[8]X[9]X[10]X[11]X[12]X[13] 13457910111516 1820 7<10 és a sorozat rendezett, tehát csak az első felében lehet, ha benne van egyáltalán... 7>5 és a sorozat rendezett, tehát csak tőle jobbra lehet... ha benne van egyáltalán... 1/2 7 Megkeressük a középső elemet és ahhoz hasonlítjuk A keresett k számot. Most az első 7 elemnek keressük a középsőjét. A 4-dik elem előtt, illetve a 7-dik után már biztosan nincs, keressük tehát a 4-7 elemek „közepén”. Ha a keresett elem nem lenne meg a sorozatban, akkor addig feleznénk a vektorunkat, míg az „elfogyna”.
9
A bináris keresés algoritmusa Algoritmus Binaris_kereses Be: n; x i,ahol i:=1,n; k bal 1; jobb n megvan hamis Amíg (bal<=jobb) és nem megvan végezd el kozep (jobb+bal) div 2 Ha x[kozep]=k akkor megvan igaz különben Ha k<x[kozep] akkor jobb kozep-1 különben bal kozep+1 (Ha) vége (Amíg)vége Ki: megvan Algoritmus vége Kezdetben az egész vektor hosszát osztjuk. Feltételezzük, hogy az elem nincsen meg. Két esetben van vége az algoritmusnak: 1. „elfogyott” a vektorunk.... 2. Megtaláltuk az elemet Osztom az aktuális intervallumot. Ha megtaláltam az elemet, akkor átállítom a megvan értékét, h az amíg tudjon leállni. Ha még nem találtam meg az elemet, akkor továbbosztom az intervallumot, attól függően, hogy...
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.