Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Hasonló dokumentumok
Megoldás meghatározása Ez a szakasz kitölti a c és S táblázatokat, a kiíratás S alapján egy rekurzív algoritmussal megtehető.

Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.

Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.

Az absztrakt adattípus egy (E,M) párral adható meg, ahol E az értékhalmaz, M a műveletek halmaza. Fő tulajdonságok. Verem

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Számláló rendezés. Példa

ú ű ú ú ű ú ű ű ú ű ú ű Á ű ű Á ű ű ú ú ú ú ú ú ű ú ú ú ú ú ú ú ú

ű ú Í Ó Á ú Ű ű Ő Ö Á ú Ű Ü ú ú Á ú ű

ú Ü Í ú ú ú ú ú ú

Ö Ö Ú Ó Ö ű Ő Ő ű ű Ü Ő Ó Ő

ő ő ő ő ú É ü ú ú ű ú ű ő ő ő ő Á Á ü ő É É É É É É Á Ú Á Á ő ő ő ő ő É Á Á Á ő ő ő Á ü ő ő ü

ú ú ö ö ü ü ü ü ű ü ü

ú ú ü ü Á ú ú ü ű ű ú ü ü ü ü

Í Ú É ő ő ú ö Ö ú ú ú ö ö ú ö ö ű ö ő ö ö ú ö ő ő ö ö ö ő ő ú ő ú ö ö ö ú ö ö ú ő ö ú ö ű ö ő Ó ő Á ö ő ö ö

é ú é é é é é é é é é é é é ú é ö é é é ö Ő é é é ú é é é é é é é é ö é é é ö é Ö é é ö é ö é é é ű é ö ö é ö é é ö ö é é ö ö é ö é Ö é ú é é é é é é

ü ö ú ö ú ü ö ü Á Ó ö ö ö ö ú ü ú ü ü ú ú ö ö ü ü ú ü ü ö ö ű ö ü ü ü ü ö ö

Ö Ö ű ű ű Ú Ú ű ű ű Ú ű

ő ö ő ú ő ö ö ő ó ő ö ü ú ö ö ó ő ö ü ó ó ó ó ő ő ő ó ó ú ő ü ő ö ö ó ü ö ö ő ű ö ö ő ú ú ó ö ő ű ö ó

É ő ő ű ú Á ő Á ő ű ő ő ő ő ő ő ő ő ű ú ű ű ő ő ő ű

ö ö ö ö ö ö ö ü ö ü ö ű ö ú ü ű ö ü Í ö ú ü ü ű ö ú ü Á ü

Í Í Í Ü Ó Ó Ö Á Ü Ü Ó Ü Ü Ó Ö Í É Ö

É Ö Á Í Á Ó Ö ü

É ö Ű ő ű ő ő ű ű

Ü

í Ó ó ó í ó ó ó ő í ó ó ó ó

ü É ö É É ö ö ö ü ö ö Á ű ö ű ű ű Á Í ö ö Ó ö

é ö é Ö é é ő í ó í é ő ö ú é ó é ő ü ü é ó ö é é ó é é ö é ő í é é ő é é ö é ű ö é í ó é é í ö í ó í ó é é ö ó í ó ó í ó é é ö ő í ó ó í ó ü é í ü

ó ú ú ü ú ő ó ő ő ó ó ó ö ó ü ő ó ő ö ü ü ó ö ő É ó ö ö ö ó ó ö ü ü ö ü ó ó ő ó ü ó ü ü ö ö É ú ó ó ö ú ö ü ü ó ó ó ü Á ö ö ü ó ö ó ö ö ö ö ó ó ö ó ó

É Í Á Á É Ü Ó É É É É Í Ó Ó Ő Á Á É Á É É É É Á É É Á Á É É Á É Í

É Í ü ú É ü ő ő ő ő ú ő ú ü ü ő ü ú ü ű ú ú ü ü Í ü ű ő ő É ő

ő ő Ű ü ú ú Ú ü ű ő ő ő ő Á Á Í ü É ő ő ő ő ő É ő ú ú ú ő Á Ö ő

Ö Ö ú

í ó ő í é ö ő é í ó é é ó é í é é í é í íí é é é í é ö é ő é ó ő ő é ö é Ö ü é ó ö ü ö ö é é é ő í ő í ő ö é ő ú é ö é é é í é é í é é ü é é ö é ó í é

ő ő ő ő ő ő ú ő ü Á ü ü ő ő ő ő ő ő ő ő ő ő Ö Ó ő ő ő Ö ő ő ő

Ü ű ö Á Ü ü ö ö

ö ö ó ú ö ö ú ü ó ö ö Í ö ö ö ü ó ö ö ú ú ö ü ó ü ó ü ö ú ü ó ü ö ó Á Á ö ü ú ó ö ü ü ö ó ü ü Á ü ö ü ö ü ö ö ö ü ö ú ö ö ö ü ú ö ú ö ű ú ú ü ö ó ö ö

ó É ó í ó ó í í ö í ó í ö ö ö ü ö ó ó ó ü ú ö ü ó ó ö ö ü ü ü ö ö ó ö í ó ű Ü ó í ú í ö í ö í Í ó ó í í ö ü ö ö í ö í ö ö ö ü ó í ö ö ó í ú ü ó ö

ő ö ő ű ó ö ó ű Í Ö Ö Á Í Ó Ö Ü É Ö Ö Ö Á Á Ö É Á Ö

ű í ú ü ü ü ü ü Ó í ü í í í É Á

Í Ó ü ü í ü ü ü í Í í É í í Í Í ü ü ü í Í ü

Í ö ö ű ú ö ö Í ö ü ö ü


ö ő ő ü ü Ó ü ö ű Á ő ő ö ő Á Ó ű ö ü ő ő ű

Í Í Ó ű Ü Ó Ó Ü ü Ö Í Ü Í Í ú Ö Ó Í ú ú Ö Ó É Í ű ú

ú ü ü ú Ö ú ü ü ü ü ü ú ü ú ü ű Í ü ü ű ü ű Ó ü Ü ű ú ú Á ü ű ű ü ü Ö ü ű ü Í ü ü

É ú É ö ö ű ö ö ö ú ú ú ű ű ú ö ű ö ű ű ü ö ö ü ű ö ü ö ö ö ö ú ü ö ö ö ú ö ö ú ö ö ú ü ú ú ú ű ü ö ö ű ú ű ű ü ö ű ö ö ö ű ú ö ö ü ú ü ö ö ö ü ú ö ű

ö ö Ö ó ó ö ó ó ó ü ö í ü ú ó ó í ö ö ö ó ö ü ú ó ü ö ü ö ö Ö ü ö ö Ö ó

Ü ü Ü Ö Ó ö ü ö Ó Ú Ó ü Ó ö ö Á ö ö ö ö ü

í í É í ó ó É ö í ó í ó í ó ó í ó í í ó ó ó í ö ö ö ö í í í ó ó ö ó

ű ú ú Ö ó Ö ó ó ó Ö ű ó ű ű ü Á ó ó ó ó ü ó ü Ö ó ó ó Ö ű ű ü Ö ű Á ú ú ú ó ű í í Ő ú Á É Ö í ó ü ű í ó ű ó Ö ú Ő ú ó í ú ó

ö ü ü ú ó í ó ü ú ö ó ű ö ó ö í ó ö í ö ű ö ó Ú ú ö ü É ó í ö Ó Á í ó í í Ú ö ú ö ű ü ó

ú ű ű É ü ű ü ű ű í ü í ő í Ü ő ő ü ú Í ő ő í ú ü ü ő ü

ö Ó ű ö ó í ó ü ö Ó ó í ö ö ó Ö ó ö í ó í ó Á í ó Á Á Ő ú ü ó Í ü ú ü

Ö Ö Ö Ö Ö Á Ű É Ö Ö Ö

Ö ő ü Ö Ö Ő ü ő Ö Ö ü ű Á Í Ö ű ü ő ő ő Ö ü ü ő ő ő Ü ü ő ő ő ü ő ő ü ü

ű Á ü ő ö í ö ö ő ő ő ő ö

í ó í ó ó ó í í ü ú í ú ó ó ü ü í ó ü ú ó ü í í ü ü ü ó í ü í ü ü í ü ü í ó ó ó í ó í ü ó í Á

Ö Ö ö Ó Ó Ó Ó Ü ú ü Ű Ö Ö Ö ö Ü ö Í ü ű

ü ő ő ü ü ő ő ű í í ű ő ő ő ü ő ő í í ő ő ő ő ő ő ü ü í ő Ö ő ü í ő ü í í ő ü ő í ő ő í í ő ü ü í ő ü í ő í ő í ő ü í ő í ü í í ő

í í ü í í í í í Ó ő ő í í í Ú ü Ú í í Ú ő ü Ú ü ő

í ü í ü ő ő ü Í ő ő ő ú í ő ő ö ö ö ű ü í ő ő í ú ö ö ú ő ő ú í ő í ő ö ö í ő ü ü í ő ö ü ü ú í í ü ő í ü Í í í í ö ő ö ü ő í ő ő ü ű ő ő í ő í í ő ő

ö ö ö Ö ö ú Ö í Ö ű ö í Ö í ö ü ö í ú Ö Ö ö í ű ö ö í ö ö Ő ö í ü ö ö í Ö ö ö í ö í Ő í ű ű í Ö Ó í ö ö ö ö Ö Ö ö í ü ö ö Ö í ü Ö ö í ö ö ö ö ö Ö ö í

ü ö ö ő ü ó ó ú ó

ű ú ü ü ü Í ü ö ü ö ü ö ü Ó ü ö ü ö ö ü ű ű ú ü ö ö ü Ó ö ű ü ö ú ö ö ü ü ű ü ü ö ö ü ü ú ö ö ü ü ú ü

ó ö í í ü Ű Ö ó ó ű ö ü Í í í ö Ö Ó ö Ű Ö ú ó ó í í ű ö ö ö ö í ó ö ö í ö ű ö ű ö ö ö ö ö í ó Ö Ö ü ú ö ó ü ö Ö ű ö Ö ü ó ö ö ó ö ö Ó í ű ö ű ö ö ű í

ű ö ú ö ö ö ö í ű ö ö ö ű ö ö ö í ü ú í ű í ö í ú ű í ü ö ö ú ö í ö ű ú ü ö ö í ö ü ö ú ű ö ö ö í Á í ü í ö ü ö í ü ö Ő ü ö í ű ü ö í í í í í

í í í í ó í ó ö ö í ű ü ó ó ü ú Á Á ó ó ó ó ó ó í ó ö ö ü Ó ö ü í ö ó ö í í ö í ó ó í ö í ú ó ú í ö ú ö ö ö í ó ó ó ú ó ü ó ö í ó ó í í í Á í ó ó ó

ű ú ó ó ü í Á Á ú ó ó ó ó ó ó ó ó ó ó ó ó ó ó í ó ü É ű ü ó í ü í í í í í ó í ü í í ó ó Á

Egyesíthető prioritási sor

Egyesíthető prioritási sor

14. Mediánok és rendezett minták

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Térinformatikai algoritmusok Elemi algoritmusok

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Térinformatikai algoritmusok Elemi algoritmusok

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

ő ű í ő ú í í Á ű í ő ő ő ő í É í í ő Ö Ö Ö Á Í Á ő ő ő ő É ő ő ú ú ú í ő Á Ö ő ő

Í Á ő é é é é é ő é ő é ő é Í Á Ú Á Á é ő é ő é é é é é ű é é é é é é é é Á é é é é é ú ú é é é é é é é ú é é é é é é é é é é é ő é é é é é é é é ű é

í ű í í í ű ö ü ü ö ú ű ú ö ö í í í ű ö ü ü ö ö ö ö í í í ű ö ü ü ö ü ö í í í ű í ö í ö ö ű í ü ü ö í ö ö ö ü í í ű í ú ö ö ö ü ö ö ú ö ö ö ü ö ö ö ö

ú ü ú ö ú í ü í ű ö ü ü ú ú ö ú ö íö í ú ü

Ú ú ö é ö é Ú ú ö ű ö ö ű ö é ö ö é í í Ö ö í í Á Á Ó é ű ü é é ü ú é ü é ű ü é

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Á Ó É É Ú É ő í ő ő ö ő ö ő í ö ö ü í ő í ő ö ű ő í ü ü ő í ö ő ü ő ú ü í í ű ü ő ő ő í ö í ú ö ő ö ü ő ő ő É

Á ú ú ű ű ú ú Í ú ú Ö ű Ö ű Ö Ö ű ű ú ÍÍ Í ú Í Í Í Í Í ú ú

Á ó ó ö ó ó ó ö ó ó ö ü ö ó ü ö ó ü ó ö ó ü ó űö ú ü ö ú ó ó ó ő ü ö ö ó ö ó ó ó ó ö ó ő ú ü ö ó ö Ú ü ó ü ő ö ü ö ö ó ó ü ő ő ó ő ü ó ó ó ö ű ő ő ű ü

ó ú ó ó ó ó ó ó ó ó ó ó ü ó ü ö ü ó Á Á Ő ű ü ó ó ó Í ó ü ú ü Á Á ű ö ó ó ó ó ö ü

ö ű é é é é é é ü é é é é ű é é ü é é é é é ó ó é Í é í é é é é ó ö é ö ö ö ó é é í é é é é Ő é é é ü ü é é é ö ö ö é ü é é í é ó ü é é ü é ó é ó ó é

ü ű ü ó ő ó ű ú ő ó ő ű ü ó ő ó ő í ő ó ó ő ő í ó ő ő ü ó ű ü ó ő ő Ö ő ü íí ő í ű ü ó ő ü ő í ő ű ü ó ő ő

Á Á Á ö ö Á É É ö ú É Á É É ű ö ö ö Á É É É ö Á Í Á É ö ö ö Ö Ö ű ö Ö ű Ó ü ö ű ö Ó Ó ú ö ö Á É É ö ű É Á É É ö

í ü ü ú í ü ú ú É Á í ű Á ú í ü í Ő Ű í Ó ű í ü í ű Ú ú É í ü í í

ő ő ó é ő ő ő é ú é ő é é ú ó é é é í é í í é ű é ö é é é Ö ó í é é é ő ő é ö ó é Í ö ö ő é é é ő ó ó ú ö ó í ó ő ő é é ő ü ö é é é Ö é í í é ú ü é ö

ö í Á Á Á ö É É í É Á Á Á Á Á É ő ö í ő ö ő ö í ü ő ö ő ö ő ü ö ő ö í ő ő ő ö í ő ő ú ö ű ö ő ö í

íő ö Ú ö ö ő í ű í ű í í ű ö í ö Ü ö

Á ó ö í í ö í ö ö ó í ű ó í

ó ú ő ö ö ó ó ó ó ó ő ő ö ú ö ő ú ó ú ó ö ö ő ő ö ö ó ú ő ő ö ó ő ö ö ö ö ö ö ó Á É ű ó ő ő ű ó ó ö ö ő ó ó ú ő Ű ö ö ó ó ö ő ö ö ö ö ő Ú ú ó ű ó ó ő

Algoritmuselmélet 2. előadás

ó í ú ő ó ó ü ő í ú ó ü Ö Í ö ő ü ö ö ó ő ü Ü ö Ö ö ü ó ü ú ö Ö í í ő ö ü ú ü ü ó í ő ő ü í ü É ő ő Í ö ö ó ő ó ó ő ü ö ü ő ó ő ő ö Ö ő ü ő ő ő ü ö ö

é ú ó é í é é é é í é ő é é ő é é í é é é ó é í ó ö é ő ő ő é í ó Í ő í é ö ő é í ó é é ű ó é Ú é í é é í é í é ó é í é ö é ő é ó ó ó é ö é Ö ü é ő ö

É ö É ó Á É ó ü Á Ő Ö ü ö Ö ő ü ö ő Ü ű ő ó ő ó ő ő ő í ö ö ö í ő ü ü ő ü ü ő ö ó ő ő ú ő ő ö ö ő ő ő ú ő ő ü ú

Átírás:

Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan írni (mondatszerű, pszeudókód nyelven) Tudja alkalmazni Meg tudja valósítani konkrét környezetben (Pascal nyelven) Önállóan képes algoritmust készíteni: tervezni, elemezni, megvalósítani 0.2. A problémamegoldás fázisai 1. A probléma megértése. 2. A modell - absztrakt feladat - megfogalmazása.. Összefüggések kiderítése és megfogalmazása. 4. Algoritmustervezés. 5. Helyesség igazolása. 6. Hatékonysági elemzés (futási idő és tárigény). 7. Kódolás - az algoritmus leírása a választott programozási nyelven (Pascal, C). 8. Tesztelés. 9. Véglegesítés. 0.. Az adatkezelés szintjei: 1. Probléma szintje. 2. Modell szintje.. Absztrakt adattípus szintje. 4. Absztrakt adatszerkezet szintje. 5. Adatszerkezet szintje. 6. Gépi szint. Absztrakt adattípus: A = (E, M) 1. E: értékhalmaz, 2. M: műveletek halmaza. 1

"Absztrakt" jelző jelentése: i. Nem ismert az adatokat tároló adatszerkezet. ii. Nem ismertek a műveleteket megvalósító algoritmusok, a műveletek specifikációjukkal definiáltak. 0.4. Prioritási Sor Értékhalmaz: PriSor = { S : S E}, E-n értelmezett a lineáris rendezési reláció. Műveletek: S : PriSor, x : E 0.5. Absztrakt adatszerkezetek {S = S} SorBa(S,x) {S = Pre(S) {x}} {S /0} SorBol(S,x) {x = min(pre(s)) Pre(S) = S {x}} {S = {a 1,...,a n }} Elemszam(S) {Elemszam = n} {S /0} Elso(S,x) {x = min(pre(s)) Pre(S) = S} Olyan A = (M,R,Adat) rendezett hármas, ahol 1. M az absztrakt memóriahelyek, cellák halmaza. 2. R = {r 1,...,r k } a cellák közötti szerkezeti kapcsolatok, r i : M (M { }). Adat : M E parciális függvény, a cellák adattartalma. x M, r R és r(x) = y 1,...,y i,...,y k esetén az x cella r kapcsolat szerinti szomszédai {y 1,...,y k }, y i pedig az x cella i-edik szomszédja. Ha y i =, akkor azt mondjuk, hogy x-nek hiányzik az r szerinti i-edik szomszédja. Példa absztrakt adatszerkezetre: (Minimumos )Kupac. A = (M, R, Adat) 1. M az absztrakt memóriahelyek, cellák halmaza. 2. R = {bal, jobb} a zerkezeti kapcsolatok. A {bal, jobb} kapcsolatok bináris fát határoznak meg. ( x M)(Adat(x) Adat(bal(x)) Adat(x) Adat( jobb(x))) 7 5 8 2 12 9 14 1 1. ábra. Kupac absztrakt adatszerkezet szemléltetése 0.6. Adatszerkezetek Egy A = (M,R,Adat) absztrakt adatszerkezet megvalósítása: 1. Konkrét memória allokálás az M-beli absztrakt memória cellák számára. 2. Az R szerkezeti kapcsolatok ábrázolása.. Alapműveletek algoritmusainak megadása. Pl. a kupac megvalósítása konkrét adatszerkezettel: 2

1. A memóriahelyek tömbelemek. 2. A {bal, jobb} kapcsolatokat számítási eljárással adjuk meg: bal(x) = 2 x, jobb(x) = 2 x + 1. Teljesül a kupac tulajdonság: ( x)(adat(x) Adat(bal(x)) Adat(x) Adat( jobb(x))) 1 2 7 5 4 8 5 2 6 12 7 9 8 14 9 1 2. ábra. Kupac ábrázolása tömbbel. A szerkezeti kapcsolatot nem tároljuk; számítjuk. 7 5 8 2 12 9 14 1. ábra. Kupac ábrázolás dinamikus memóriacellákkal; a szerkezeti kapcsolatot táruljuk. 0.7. Alapfeladatok 0.7.1. Összegzés Kimenet: s = n a i i=1 type 5 f u n c t i o n Osszegez ( var a :Tomb; n : i n t e g e r ) : i n t e g e r ; 7 s, i : i n t e g e r ;

9 s : = 0 ; 10 f o r i :=1 to n do 11 s := s+a [ i ] ; 12 Osszegez := s ; 1 end { Osszegez } ; 0.7.2. Számlálás T tulajdonság Kimenet: a sorozat azon elemeinek száma, amelyekre teljesül a T tulajdonság s = n i=1 1 : T (a i ) type 5 f u n c t i o n T( x : i n t e g e r ) : boolean ; 6 begin end ; 7 8 f u n c t i o n Megszamlal ( var a :Tomb; n : i n t e g e r ) : i n t e g e r ; 9 {A T t u l a j d o n s á g g l o b á l i s } 10 var 11 s, i : i n t e g e r ; 12 begin 1 s : = 0 ; 14 f o r i :=1 to n do 15 i f T( a ) then 16 i n c ( s ) ; 17 Megszamlal : = s ; 18 end { Megszamlal } ; 0.7.. Maximum kiválasztás Kimenet: b = n max i=1 a i type 5 f u n c t i o n Maximum( var a :Tomb; n : i n t e g e r ) : i n t e g e r ; 7 maxi, i : i n t e g e r ; 9 maxi := a [ 1 ] ; 4

10 f o r i :=2 to n do 11 i f a [ i ] > maxi then 12 maxi := a [ i ] ; 1 Maximum: = maxi ; 14 end {Maximum} ; 0.7.4. Lineáris keresés (Kiválasztás) a 1,a 1,...,a n F feltétel Kimenet: a legkisebb olyan i index, hogy F(a i ) teljesül. Ha nincs ilyen, akkor 0. type 5 F e l t e t e l = f u n c t i o n ( x : i n t e g e r ) : boolean ; 6 f u n c t i o n K i v a l a s z t ( var a :Tomb; n : i n t e g e r ; F : F e l t e t e l ) : i n t e g e r ; 7 var 8 i : i n t e g e r ; 9 begin 10 i : = 1 ; 11 while ( i <=n ) and ( not F ( a [ i ] ) ) do 12 i n c ( i ) ; 1 i f i <=n then 14 K i v a l a s z t := i 15 e l s e 16 K i v a l a s z t : = 0 ; 17 end { K i v a l a s z t } ; 0.7.5. Rendezés: kiválasztó-rendezés Kimenet: a bemenet elemeinek növekvő (nemcsökkenő) felsorolása : b 1 b 2 b n Elv: ismételten válasszuk ki a rendezetlen halmazból a rendezésben soron következő elemet (a legkisebbet), és rakjuk a már rendezett részsorozat végére. type 5 procedure KivalasztoRend ( var a :Tomb; n : i n t e g e r ) ; 7 i, j, mi, x : i n t e g e r ; 9 f o r i :=1 to n 1 do begin 10 { a [ 1.. i 1] a bemenet i 1 l e g k i s e b b eleme r e n d e z e t t e n } 11 mi := i ; 12 f o r j := i +1 to n do { a [ i.. n ] minimumának megkeresése } 5

1 i f a [ j ] < a [ mi ] then 14 mi := j ; 15 x := a [ i ] ; { a [ i ] és a [ mi ] c s e r é j e } 16 a [ i ] : = a [ mi ] ; 17 a [ mi ] : = x ; 18 end { f o r i } 19 end { KiválasztoRend } ; 0.7.6. Rendezés: beszúró-rendezés Kimenet: a bemenet elemeinek növekvő (nemcsökkenő) felsorolása : b 1 b 2 b n type 5 procedure BeszuroRend ( var a :Tomb; n : i n t e g e r ) ; 7 i, j, x : i n t e g e r ; 9 f o r i :=2 to n do begin { a [ i ] beszúrása az a [ 1.. i 1] r e n d e z e t t sorozatba } 10 x := a [ i ] ; 11 j := i 1; 12 while ( j >0) and ( x<a [ j ] ) do begin 1 a [ j +1]:= a [ j ] ; 14 dec ( j ) ; 15 end { while } ; 16 end { f o r i } 17 end { BeszuroRend } ; 0.7.7. Két rendezett sorozat összefésülése a 1 a 2... a m b 1 b 2 b n Kimenet: a bemenet elemeinek növekvő (nemcsökkenő) felsorolása : var 4 m, n : i n t e g e r ; 5 a, b : array [ 1.. maxn] of i n t e g e r ; 6 c : array [ 1.. maxn+maxn] of i n t e g e r ; 7 i, j, k : i n t e g e r ; 9 readln (m) ; 10 f o r i :=1 to m do 11 read ( a [ i ] ) ; 12 readln ; 1 readln ( n ) ; c 1 c 2 c m+n 6

14 f o r i :=1 to n do 15 read ( b [ i ] ) ; 16 / / ö s s z e f é s ü l é s 17 i : = 1 ; j : = 1 ; k : = 0 ; 18 while ( i <=m) and ( j <=n ) do begin 19 i n c ( k ) ; 20 i f a [ i ] <b [ j ] then begin 21 c [ k ] : = a [ i ] ; 22 i n c ( i ) ; 2 end e l s e begin 24 c [ k ] : = b [ j ] ; 25 i n c ( j ) ; 26 end ; 27 end { while } ; 28 f o r i := i to m do begin { az a s o r o z a t maradékának másolás } 29 i n c ( k ) ; 0 c [ k ] : = a [ i ] ; 1 end ; 2 f o r j := j to n do begin { a b s o r o z a t maradékának másolás } i n c ( k ) ; 4 c [ k ] : = b [ j ] ; 5 end ; 6 / / k i í r a t á s 7 f o r i :=1 to m+n do 8 w r i t e ( c [ i ], ) ; 9 w r i t e l n ; 40 end. 0.7.8. Keresés rendezett sorozatban Adott egész számoknak egy a = a 0 a 1 a n 1 rendezett sorozata és egy x egész szám. Keressük meg azt az i indexet, amelyre a[i] = x, ha nincs ilyen, akkor a 1 értéket adja az algoritmus! maxn=1000; 2 type tomb=array [ 1.. maxn] of i n t e g e r ; 4 f u n c t i o n BinKeres ( a : tomb ; n, x : i n t e g e r ) : i n t e g e r ; 5 / / b i n á r i s k e r e s é s r e n d e z e t t sorozatban 7 bal, jobb, k : i n t e g e r ; 9 bal : = 1 ; jobb :=n ; 10 while ( bal <jobb ) do begin 11 k : = ( bal +jobb ) div 2; 12 i f ( a [ k] <x ) then 1 bal :=k+1 14 e l s e 15 jobb :=k ; 16 end ; 17 i f ( a [ bal ]= x ) then 18 BinKeres := bal 19 e l s e 20 BinKeres := 1; 21 end { BinKeres } ; 7