You are on page 1of 20
Bevezetés az algoritmuselméterye ee Az algoritmuselmétet néha ProgramozAsi feladatok me oldasanak 16, s épései Kezd6 programozék — epycrers sr 2yszer amozasi mepfogamazisa un szonnal neue MO Az igy megirt programok azonban legtabbsz oT Altalaban ez elfogadhat6 néhany soros prow meee peutats irésanal ez. az tit mar nem fame) 3 Altaléban egy bonyol ‘ey bonyolultabb. Program megirasét az alabbi f6 lépésekre bonthatjuk: 1. A feladat meghatdrozasa feladatok megoldasénal a feladat Megirdsanak egy adott programnyelven. hezen fejleszthetok vagy médosithatok. Setében, de bonyolultabb, tb ezer soros Az elvégzendé feladat megfogalmarisa ley szemléletes, hogy a program készitdje késot el, mint amit a Program ,.megre: gyen egyértelma, rdvid, témér, pontos, . bb pontosan ugyanazt a feladatot készitse ndel6je” var téle. 2. A feladat algoritmusanak elkészitése A masodik lépésben késziteni kell egy megoldési tervet, vazlatot, amit dltaldban az amator programoz6k és a szakemberek is .,feliilrél lefelé” finomitanak, azaz nagyobb €gysegekre bontjak a feladatot, s ezen részek feladatait hatérozzak meg eloszér. Elsé K6zelitésben dltalaban minden feladat harom f részre bonthaté —a bemené adatok bevitele, —azokon a sziikséges miiveletek elvégzése, —az eredmények megjelenitése, rigzitése, kiiratasa. Az igy kapott f6 részeket azutan .részenként finomitjék” addig, aig olyan elemi részfeladatokhoz jutnak, amelyek mar kénnyen kédolhaték egy adott programnyelvre Az igy kapott vazlatterv azonban nem program, hanem ,,csak” egy algoritmus. Algoritmus: olyan pontos eldiras, mely megadja, hogy a feladat megoldaséhoz milyen Tmiiveleteket, milyen sorrendben kell elvégezni. (Wirth szerint: Adatstruktiira + _ algoritmus = Program.) Be tariemuaveressége: csak véges sok lépésbal dllhat, Salgoritmus végessége: csak véges sok lépés ; a Piericiaiiste nem lehetnek az algoritmusnak kétértelmé részei, 5 Bicsets: a feladathoz sziikséges dsszes lépést tartalmaznia kell. tm. tehAt_nem program, csak megoldasi vizlat. f fe ae létezik az algoritmusok elké ‘itéséhez pl. folyamatabra, struktogram, IZ a z k i it kés6bb részletesen is taglalun! ; a mi letras, are gorin torekedni kell arra, hogy az algoritmus.minél Bases, acaz gyors, Kevéshé bonyolult és kis helyfoglalisit legyen. bb legye! Hkésbbb eay kiil6n fejezetben foglalkozunk.) 1a konkrét programnyelvre vald “leforditisa’ oritmus valamilye! Grihet6 forméji meghalérozott sorrendl, véges, e¢pi érthet pibakeresés eee utd, dik. Az hogy @ js az esctleges jés_ soksz0r szakembel ztelés es megiras: ; asodikban pro! k ‘ tenyleg' Nd eieeet alkalmazzak, e ae 5 ét vii nfl datokkal, s a2 ©! at tal go Kilénféle eel tesrtelé 5, Dokumentalas asi feladatok sokszor denki taldlkozott m: al jgatni lehetett. A programo: Bizonyéra mi k dokumentécid, s csak talél beldle, milyen operdcids rer egyik a felhaszndloknak s26 szikséges informéciot. A egyiitt késziil ndszer sztiksé; A felhasznal6i dokumentacié tartalmazza: ‘a programozisi feladat megfogal- _ mazését, a program céljat, + a program installdcidjénak lépéseit, _ aprogram nyelvét, nyelvjarasat, _ az esetleges mds nyelvii betétek 3 i6it, 4 futtatéshoz szitkséges géptipust, hardverkdvetelményeket, operdciés betéltését, inditasét, tszotart, technikai m lefut, még nem jelenti az, hil pbonyolult szabt ( ek a programtesztelés két logikailag rf { és a dinamikus tesztelést Cle ik, a mésoer smenyekbOl megprobalnak key leginkabb elhanyagolt része a dokumen far olyan feladattal, amelyhez. nem volt megfoje hogyan kell a programot inditani, Kil, sgeltetik. Kétféle dokumentacié létezi I, és tartalmaznia kell minden, a program has; nalatah ‘masik a szakembereknek irddik, és a program kés7ité 4 zt, program lefutdsa soran a py, hogy. Progra,” @ bak még nem keriiltek els. "ie abb és hosszabb feladai, .°™l 28 ches 186 eset, Elagat etkert, a program végrehajt a modszerek a fekete doboz, a fehér dob! 02 tacig, lepn ik. Ay hoz tésye] A fejleszt6i dokumentacié tartalmazza: a feladat pontos megfogalmazasit az algoritmus dsszes szintjének részletes leirasat, ' a gépi és nyelvi igényeket, a valtozétablat (név, ti Oki Pie an it (név, tipus, hatokér, az egyes szintek részfeladatait, az egyes —eljarasok hierarchiajt megad6 tablazatot, 4 program fejlesztési lehetdségeit, 4 tesztelési tervet, a tesztelés eredményeit, a Program _logikai ellendrzését, a szofiverfejleszt6i tesztelést, a fliggetlen személyek altali tesztet, az inspekciés tesztet, a felhasznaléi tesztet, 4 program teljes listajat, @ Program egy hattértéron érzitt listajat, Algoritmusleiré eszkizik Céljuk: a megoldas menetének szerkezeti egységeket vila Legismertebb algoritmusle gépt6l fiiggetlen, szemléletes, a logikai gondolatmenetet, a san tikkréz6 lefras Ae 6 eszk6zHk: a) folyamatabra, b) mondatszert leirdsok Folyamatabrak A. folyamatabr: ees adott feladatok megoldisihoz sztikséges lépéseket_sorrendben See ilénb’z6 —_geometriai_alakzatok felhaszndléséval szemléltetik ge an felhaszndlt szimbélumok és jelentéseik a kovetkez6k RT | = tin. hatarszimbélumok, a program elejét és végét jelzik —a beolvasé és kiiré utasités szimbolumai v —— ~— értékadé utasités, miivelet-végrehajtas, aritmetikai kifejezés kiértékelése Y —eldgazis ‘A feladat végrehajtésa, egy a rombuszba irt feltétel alapjén egyik vagy médsik irdnyba folytatédik. A i rombusznak két kimenete van, amelyek (i, n) jelzéssel vannak ellatva. i) talalkozhatunk a szamlalés ciklus jel6jg Esérg — gyakr . eh ‘a szimbolummal i$ ‘I paladési irényat nyilakkal jeléljik. Abban az esethe, A ee er eamatdbrl fentrél lefelé, iletve balro} jst kell kovetni, ben, ha ‘A folyamatabrik egyik hétrdnya, hogy elemei nem igazan fe jelnek meg az algoritmuske soran felhasznalhato strukturdknak (szekvencia, ¢lagazas, ciklus). Hasznélatukka| kénnyen eléallithatok olyan bonyolult szerkezetek is. melyek megértése azutan nagyo, problémét jelent. Masik jelent6s hatranyuk, hogy ¢€Y bonyolultabb, terjedelmes py en terjedelmes (nagymérett) gran elkészitése esetén ige folyamatabrat kell késziteni. Jadat algoritmusat folyamatabran szemléltetve! zit Nézziik meg egy nagyon egyszert fel FELADAT: Keérjiink be a billentyéizetrol N (0, egész) szdmot, és szdmoljuk \j luk ki ésszegiiket! START SZUM:=0 : I:=1 az algoritmuselm Mondatszerii leirasok Ahogy azt a név is mutatja, a feladat egymast kévetd 1é szetkezetek egymésutanjaval _probaljuk ¢ kilénbéztethetjiik meg it mondatokkal vagy mondatszeri leirni. A mondatszeri leirs két fajtajat 1. A mondatok soro; dival irjuk le a feladat megold: a Hi a fel: egoldasat, és a mondatokat sorszamozzuk. A program egyes részei a in AV progremexyes(r zeiben, ha el kell témi a sorrendben val végrehajtist6l valamilyen feltétel miatt, akkor a megfelelé sorszimra hivatkozhatunk Példa: Olvassunk be N >=1 db egész szamot és hatarozzuk meg ezek 6ssz« 1, N beolvasésa is 2. Ha (N nem egyenlé, one ecards lopikai epyenloségvizsgélat (cgyenl6-e?, nem dsszetévesztend6 a7 értékadassal). Ha teljes algoritmust frunk: Ha eljarast (fiiggvényt) trunk: Bemenet: // az adott adatok i " az eredmény ; i prs ° See ita arametere! E algoritmus utasitasar ; f a Algoritmus vége. ége. ll te atokkal Semben tamasztott kovetelmények ies , i ések a “as forma): ra vonatkozo es ee kévetelmenyek felsoroldsa Ertékado. utasitas Formaja: valtoz6 ifejezés, valtoz6 oldalon allé valtoz6, felveszi a jobb oldal értéket, yy lem ‘Az wiasitis hatdséra 2 bal ka egyenloséggel. Seszetévesztend6 egy matemati Pl. X:=8 X:=X43 1 matematikailag természetesen helytelen lene de, m > Most az x értéke 11 lesz. Elagazasok (feltételes utasitasok) Formaja: A) Hat. a valamilyen feltétel Eldgazis vége. A rinéjelben év6 feltétel tli étel tile: I tel teljesiilése esetén az utasitas(ok) keriil(nek) vé i végrehajtas1 feladat Ha a feltétel nem Seal a Utasités(ok)2 OF a2 utasitas( , Ok)1 keri] .0k)2, | : o > S Mindkét a oo Pa it megoldasa az Elagaz#s igazas etés az algori velméletbe C) Elagazas. ae -esetén 1 uutasitas(ok)1 ais esetén sltétel 2 2 utasitas(ok)2 ae esetén feltétel eltétel n utasités(ok)n cgyéb esetben Ei oe utasités(ok)n+1 Formja 29) ORNS seat 81 ae a -esével ciklus- kezd6- valtozé érték éskiz. a ciklusmag utasitasai Ciklus vege A lépésk6z 1 esetén elhagyhat6. Szokasos ezt a szerkezetet szdmlalés ciklusnak nevezni B) Ciklus amig feltétel a ciklusmag ut Ciklus vége. A ciklusmag utasitasai addig hajtédnak véere, amig a feltétel igaz, s ha a feltétel hamis, akkor sa a Ciklus vége utan folytatodik. Szokasos elnevezés: eli tesztelés a program végrehaj ciklus. ©) Ciklus “ ciklusmag utasitasai amig.....-. feltéte! Ciklus vége. ha a feltétel hamis, akkor egyszer addig hajtédnak végre, amig a feltétel igaz, ‘a a Ciklus vége utin folytatodik. A ciklusmag utasitas dnak. Elnevezés: hatul tesztelés cikh Jy ezt a fajta ciklust gy haszndlja, hogy a ciklus addig fut, A ciklusmag utasitasai a program yégrehajtas: mindenképpen végrehajt6 Megjegyzés: néhany programnye amig a feltétel hamis. 13 ; No egész szam, S2amitsyy, iy i & 3. re p Alapveté algoritmustipusok (clemi programozasi tételek) Aki mar tobb pro; gramot készitet problémak, Ras ane oe algoritmus sziikséges, legfeliebb a ky masok és masok. Ebben - : ezeket az algoritmusol 26 témakban, bizonyara tapasztalta, hogy az egyes ipizalhat6k, megoldasukhoz gyakorlatilag ugyanaz az en a részben mont seas & feladat szivege, a valioz6k, Konstansok Kat elemi prog; chany ilyen tipust algoritmus kévetkezik. Szokas Programozasi tételekként is emlegetni Mielétt azonban raté: n \goritmusainkb: ratérnénk a amozéi sa ehban Programozési feladatokra. ik 4 : leggyakrabban el6forduld tipusokat, adatszerkezeteket! i ae Elemi adattipusok A tételek bemutatasa soran csak néha sopra a en csak néhany egyszerii, elemi adattipust hasznalunk, mint példaul példdul A, B, SUM, Oca, Dust valtozdkat. Nevik egy vagy t6bb karakterb6l allhat, mint eaner neta ree” DBI. Feladatuk egészek, tirtek, karakterek tarolsa. Az, hogy meres By in lott programnyelv hogyan és a program melyik részén definidlja vagy ee » a et az adott nyelv feladata. (PI. int sum; a C++-ban). Mi az algoritmusainkban peccnalt val pa nem jeloljuk ktilén az egyes tipusokat, esak a valtoz6 nevével Tombok Algoritmusainkban hasznélunk témbdket is, melyck azonos tipusb6l allé tbb elemi adatot tartalmazhatnak. Ha a hét napjainak kézéphomersékleteit szeretnénk térolni, akkor nem kell kiln hétfé, kedd.....vasérnap nevi valtoz6kat létrehoznunk, hanem elég egy olyan szerkezetet haszndlni, amely képes hét ktlénbéz6, de azonos tipust adat tarolaséra. Ezeket a szerkezeteket témbdknek, esetenként vektoroknak nevezziik. Jelen példaban HOM{1..7] azt jelenti, hogy haszndlunk egy olyan szerkezetet, melyben het adatot tarolunk sorban. A hét els6 napjat a HOMf[1], a hetedik napjét a HOM[7] reprezentélja. Az n. napra HOM{n|-nel hivatkozhatunk. A témb (vektor) elemeivel ugyanigy végezhetiink miiveleteket, mint az egyszerti valtoz6kkal. HOM(2]:=3 vagy HOM[5]:=HOM[5]*2. Logikai miivelet esetén is haszndlhatok a tomb elemei, Ha(HOM[4}>25) akkor Ki: *Meleg volt’. Néhany programnyelv a témb els6 elemét 0-val indexeli (ilyen pl. a C, C+#), ilyenkor a HOM[0] a timb els6 elemét jelenti, Algoritmusainkban mi a vektor els6 elemét 1-es szimjeggyel indexeljik. (Az egyes programnyelvekben a tmb0k deklardlésa és definidldsa szdmtalan médon trténhet, mint pl 4. Ci+-ban a fenti heti hémérsékletes példa esetén float HOM[7]; lenne a timb definicioja.) Stringek (karaktersorozatok) ds eZ ési Alni. ikor egy ‘Akkor szokas ezt az elnevezést haszndlni, amikor egy | e y Q tartalmaz, (pl. Egy valtozéban egy hallgat6 nevét téroljuk.) Tulajdonképpen a string nem m mint egy olyan tomb ami karaktereket tartalmaz. Altoz6 nem egy, hanem tébb karaktert adatrél tébb,, magassigat, ség lehet olyan Ssszetett adatszerkezet hasznélatara, amikor i acid A k. E: a 6] tarolhatjuk a nevét. f Aciot kell trolnunk. Egy tanul6rél tarolhatj ! t, at t ein i atag it reelen valtozéban. Mindhérom adat kilénb’z6, de mégis ésszetartoz6 yeu eeratiozsat egyes programnyelvekben rekordoknak, mas nyelvekben strukturénak ry Rekordok Esetenként sziiks emek bsszegét! A soro; zat pe ct pmoljuk : ott egy N79 elemi ggmsoro7a Son elem ‘AUNT ‘eagtorban taroljuk. re aa a Bal ésako vetkezOKbe is : Bemenet ALLNI Bemenet: OSB ‘Algoritmus: eee Guus = THINS : Osszei sszeet ALi) Ciklus vése: Algoritmus VEEe- aq homersékletet, 5 az értékeket a Hom HOM példa az Oss: és tételére: yes napian negmertik eBys2er mits ; atlaghomersékletet! hat minden 8 \ektorban taroljuk. k ki a heti ‘Algoritmus: Atl=0 Ciklus Ciklus vége Ath=At/7 Algoritmus véze. dott egy N>O elem sorzat ee ian cee a asoosts meatnee Eee esstbb plaidonsés sO) een AVERT ulsjdonsisolea och feeerdattinint maze ez T tulaidonsig Ss Vi ai a néhany pé é a az ES ig Bemenet: ih Bae egy szim prim vaj pee a tanulé ae 7 algoritmus. Az »N}, Ttulajdonsag gy nem prim stb. sabb, mint 180 cm, igynevezett . logikai ti Mg cm Van ae as algoritmus utols0 isa b feladat ai lem”. Sokszor a feladat » Mint az algoritmus megi i is megirss. dt a My lagi 1..20 bb tanuls } elem vek : °. torban taroljuk. Feladst Ciklus i Ciklus vége. Ha (i Algoritmus vége. Adott egy N>0 xy N>0 elemé soro. : hogy a sorozat tag hoek at 27 s0tO2at tagiain ételmezett T tulajdonség. Tudjuk eRe ee tulajdonsaga, feladat megadni ezen tag sorszdmat. AZ Sorozat tagjain, mert ha mse a <7 OBY most nem kell vzsgéinunk, hogy vésig értink-e a ee a sorozat utols6 tagja biztos T tulajdonsdga lesz, bi Bemenet: A[1_.N], T tula Kimenet: Sorsz Algoritmus: i= Ciklus amig A[i] nem Teulajdons iit] Ciklus vege Sorsz:=i Algoritmus vége jdonsag, tudjuk, hogy van Ttul elem a Ttul elem sorszma Példa kivalasztasra: Tudjuk, hogy az N=20 tagu osztily tagja Toth Mihaly. Hanyadik a rendezett névsorban? Algoritmus i Ciklus amig NEV[i] > "Toth Mihaly i Ciklus vége Sorsz:=i Algoritmus vége. a sorozat tagjain értelmezett T tulajdonsag, Olyan van-e Ttul. elem a sorozatban, és ha van, hanyadik, Kivdlasztds dsszegzése. Két legismertebb fajtajat ‘Adott egy N>0 elemii sorozat, s egy algoritmust kell ini, amely eldénti, hog Ez a tétel gyakorlatilag az eldént S ; targyaljuk, a linedris és a Jogaritmikus keresést 3.4.1. A linearis keresés T tulajdonsag + A[I..N], Bemenet: AL nitro elem sorseéma—ha van Kimenet: Sorsz Algoritmus: A[i] nem Ttul Ciklus amig i<-N & +1 cay keresett elem (Z). A soroza zat &5 CY * mely eldénti, hog mo sorozat 5 7 goritrmust kel megkeressik a sorozat felét, s \ip, jis SRt elem # felezéspont clot vagy ra amig megtalaljuk a kerese, tt a i részsorozatot addig. ett ijk, 0 renderets SC poaia’ Jezzik az gy Kaper 156 hatara. ; tvs leat sorozat alsd €S ae peck Fapeven: was az ebjérist intervallumfelezéses ™ : zat, Z Fe emenct A(L.N] Rendezet'®S9°027; 27 elem sorszdma— ha van Kimenet: Sorsz Algerie FH:=-N Ja sorozat als6 hatéra— AH, fels6 hatéra py ee Haz egésmrész-flggvény egy tort i= EGESZRESZ((AH+FH)/2) Ba Jlegész részét adja Ha(AfiJZ) akkor — FH:=i-1 amig AH<-FH és A[i] OZ Ha(AH<=FH) akkor SORSZ:=i Algoritmus vége. ‘A Iogaritmikus elnevezés onnan szirmazik, hogy ezzel a méds ‘megkereséscher sziikséges lépések szma max. logy N. gas eTel 22 cn Megiegy2és: a2, hogy egy adott programozisi nyelv az egészrészképzé Mteiiirizthacenl, il, 2 kerektcrsorozatoket Pian ae Fe rsorora : 1 gy 16 itokat hogyan hasonlit dssze, mar nem az Besritins, ee hanem az adott nyely A3. é5 4, algoritmusok esetén az els6 T tul azN=25 elemi osztilyn [1.25] timbben taroljuk, een oe elem megkeresése acél » Nagy “neva, s ha van, hanyadik? A névsort Eh Bevezetés az algoritmuselmélerhe ain értelmezett T tulajdonsag. Olyan aa T tulajdonsaga elemeket Bemenet: A[1..N], T tulajdons; Kimenet: DB a Ttul. elemek Algoritmus: DB:=0 Ciklus i :=1-t61 N- ‘ma jdonsagu) akkor DB:=DB+1 Adott egy N=20 fos oszté jematika eredménye 20] vektorbs Eramvjeeeabucmialiat ee ee coe Algoritmus: DB:=0 Ciklus i =1-t61 20-ig Ha(JEGY([i] =1) akkor DB:=DB+1 Ciklus vége. Algoritmus vége. 3.6. A ki gal le jdong. Olyan ain értelmezett T tu egy kil tot rendeliink ho: , a sorozat Adott egy N>0 elemii sorozat, s algoritmust kell iri, amely a T tulajdonsigi elem gydjti. Ennél a feladattipusnal gyakorlatilag sorozathoz soro: sor n BU] vektorba A[L.N], T tulajdonsdg : Bl] Algoritmus: db:=0 Ciklus i = 1-161 N-ig Ha(A[i] T tul.) akkor db:=db+1 B[db]:=i E Ciklus vége Algoritmus vége. élda kivalogata: Keét hétig naponta meer taroltuk. Valogassuk ki a fagypont alatti nap Algoritmus: j Ciklus i :=1-t6l 14-ig Ha(Hom[i}<0) akkor j zis vege: A mért adatokat a HOM[1..14] témbben mértiik a hémérsékletet tsiik egy témbbe dket! ok sorszamait és gyUy mbben tarolva. § meg Kell keresnj rnrozés a Kordbbi algoritmusokhy, S%, lemét vizsgalni. 2 Kenge 1. sorozat aZ Al N>0 Se 10 .gnagyobd elemét Ne i zat egyetlen ¢! dott ay Nt valamilyen 52 ey hogy most eBYS elég a 50 2 ALIN e : aes Re jparemagyobb” elem sorszame Algoritmus: SORSZAM!=] Ciklus i :=2-161 N-ig Ha(A[SORSZAM]0 és egy M>0 elemi halmaz. az A[1..N] és B[1-M] vektorokban tdrolva, Készitsik el a két halmaz metszetét a C[] vektorba! Megoldas: vegyiik egyenként az A[1..N] elemeit és nézztl elemei kézt vele megegyezét, s ha talélunk, tegyiik ezt az elemet a C k meg, hogy talélunk-e a B[I..M] {I-be! Bemenet: A[I..N], B[1.-M] Kimenet: C[] Algoritmus : Cd Ciklus i =1-t61 N-ig jel Ciklus amig j<=M és Afi] BU] faith Ciklus vége. HaGj<=M) akkor Cdb:=Cab+1_ = C[CAb] =i] Ciklus vége. Algoritmus vége. 3.9. Az unidk tele ‘Adottak az N>0 és egy M>0 elemii halmazo Készitsiik el a két halmaz egyesitettjet (unidj ay ee Ventkes Megoldas: vegyiik az A{1..N] elemeit egyen! ént, 3 PF feladet mar szinte ugyanaz, mint az eldbbi metszetkep akkor rakjuk be a C[]-be 2 Bi] soron kévetkez6 clem Af]-ban. az A[}..N] és B[I-M] vektorokban trolva at) C[] vektorba! pakoljuk be Oke azzal a kiilonb hha nem talaltunk vele mege ta C[1.Ml-be. Ezutan a gel, hogy most eyezot sorozat al ; Ciklus j =1-161 Mri Ciklus amig i0 elemii A[1..N] és az M>0 elem B[1 M] Tendezettséy Ci}. Az algoritmus egyszerisitése érdekében haszndljunk egy kis triikké Az eredmény +végtelen jeldlje a szdmitégépen Abrazolhaté Pea St. A megoldéshay ee vzoielie gépen Abrazolhaté adott tipusti legnagyobb érté ban végielként a megoldas cgyszerisitése érdekében. Byobb értéket. Ba Adottak két rendezett sorozal az eredeti sorozatok minden eleme benne Bemenet: A[1..N], B[1..M] — Cin [1..M] —rendezett sorozatok Algoritmus: A[N+1]:=+végtelen : BIM+1]:= +vé, telen ‘tegyiin| rozati al i gi Ihegy' Ik a sorozatok - Ciklus amig i=1 és <= Ha (VAN_JO_ESET(i)) akkor i:=i+1 : X{i]:=0 kiilnben i= Eldgazas vége. Ciklus vége. Ha(i>N) akkor VAN’ Algoritmus vege. flasztunk elemet, hogy probélunk mindaddig aj elemet venni, amig egyéltalban van tovabbi elem és az éppen viz eailtat nem lehet venni. Ha a keresgélés kézben t corozat elemei nem fogytak el, akor az el6z6 szintnek valaszolhatjuk azt, hogy sikeres volt 4 valasztas, ha pedig az utols sem felelt meg, akkor azt, hogy vissza kell lépni az el6z6 sorozathoz. ‘Az i. sorozatbél ugy VAN_JO_ESET()) : Ciklus ; X(i}=X(i}+1 Bee amig X(i] <-Zlil és ROSSZ_ESET(.X{i)) Ciklus vége ; VAN_JO_ESET = (X[i<=Z[i) Eljaras vége. etényi Pane; Szémitéstechnika ozépfokon jl Caer ESET GD jars vege: pada sissralepéses HOLES Pe eeices kerest ‘ 26, : ae czemlcletes pelda ig rag event gy. hogy egyik sem titi a masikat} Zits a gre a kovetkez6 feladat. Kg, algoritmust, mely elhelye2 Megfeleltetés: eee az egyes vezérek lehetséges elhelyezései =Z[2]=...N F : Z}-22) i] > Xfi] és ABS( XTi]-XUi)) > i-j G XG) nem zrja ki GX): XL a : (azaz aj. vezér nincs egy sorban vagy atléban az i. vezérrel) 8 vezér elhelyezése: lize Ciklus amig i>=1 és i<=N E Ha(VAN_JO_ESET()) akkor i:=i+1 : Xi kiilénben i:=i-1 Blagazas vege Ciklus vége akkor “VAN’ megoldas vége. J0_ESET(): lus Xfi=X(i}+1 ] 0) és ABS(X[i] -xG)) Es ezek lehetnek hasonlé wowwagy.c nicest gy csbkkené so} °S programok THeESLide gett cltroek hb sorendbe, Sokfele rendezésieljrés tei stringeket esetleg rekordokat kell rent’ Aas aN ET EE a REC Pee rendez. Az hogy ee sokszor karaktereket, isa ya eae saul, RESETS eiaeveee ela programozésa ROMO Siook ose Siid8\, ax tale gg. Tlyen tényezik pl. a modszer eee szama. Nagy) az algoritmus sorén végreha A iddigényesebb mint a sz ‘agyméretii rekordok e: eat végrehajtott cserék, mozgatisok amok mozga esetén pl. a rekordok mozgatasa sokkal A kévetkez6 algoritmusok mindegyik avike igs lesz, hogy a7 algortmus sorin az adatokat a rendezéseket ezért belsé rendezéseknek is végig a meméridban ta a n taro) 4 eee Ijuk. Szokas ezel AzN darab_ rendezendé 6 ; Meier eer cebi ll clemet ra is A[L.N] vektorban. Az els6 kérben kivalasztjuk a Memeeiicvell ina A[i}-nel hogy az All}et dsszehasonlifjuk az A[2] ...-AIN] Pe eh AN a isebbet taldlunk, akkor at teseztk A(l] helyébe, igy az elsd ee AL) ae vektor legkisebb eleme. Az eljéést AD]... ADN-l-gyel pee Ns elton, Nel. lenares rendezett lesz. Nyilvanvaléan elég a teljes a an , mivel ha az elsé N-1 elem a helyén van, akkor az N. is A rendezés algoritmusa: A[1..N] rendezetlen A[I..N] rendezett N-L-ig i+1-t61 N-ig Ha (A[jJAG)) akkor légazas vege. Ciklus vége- F ‘A[SORSZAM] = ALi] Aij:= ERTEK Ciklus vége Algoritmus vége. Ebben az algoritmusban a Kordbban emlitett minimum kivalasztisi tg, ie szer. A médszer memériaigénye csak egy valtozoval nagyobb mint az also “rendezési algoritmusé, a k6rdkén beliili mozgatasok szima azonban jelentésen csikken, jgy ezzel a rendezéssel jelent6s futdsi idé megtakaritashoz juthatunk az elséh6z képest. i WM 61 10 44 5 12 16 Bie22 24 33 7 4 Sci 512016 40 70 31 47 22 24 33 7 4 Sens ol 12916 40 70 31 47 22 24 33 7 x Seo! 1216 40 70 31 47 22 24 33 19 4% WeeeOns2 16 22 24 31 33 40 44 46 47 61 10 sét a szomszé. : ndulunk el, mee clemek Cseréjével végzi. Az els6 kérben? ie paest §sszehasonlitjuk az eldttiik levével a Képest, felcseréljtik dket. Az ‘indul » 8242 a sorozat elején lesz. Minde! link, de egyre Tovidiilnek a kérdk, mert a soroz , a atl a buboréken a nevét, hogy a sorozat végétil#

You might also like