Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Egydimenziós tömbök. 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:

Hasonló előadás


Az előadások a következő témára: "Egydimenziós tömbök. 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:"— Előadás másolata:

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...


Letölteni ppt "Egydimenziós tömbök. 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:"

Hasonló előadás


Google Hirdetések