Progrozás tételek elsorolókr Összegzés Feldt: Adott egy E-bel eleeket elsoroló t obektu és egy :E H üggvéy. A H hlzo értelezzük z összedás sszoctív bloldl ullelees űveletét. Htározzuk eg üggvéyek t eleehez redelt értékeek összegét! Üres elsorolás eseté z összeg értéke deícó szert ullele: 0. Speckácó: Algortus: A = t:eore s:h E = t=t U = s e et s := 0 t.frst t.ed s := s + t.curret t.next Szálálás Feldt: Adott egy E-bel eleeket elsoroló t obektu és egy :EL eltétel. A elsoroló obektu háy eleére telesül eltétel? Speckácó: Algortus: A = t:eore c:n E = t=t U = c 1 et e c:=c+1 c:=0 t.frst t.ed t.curret t.next SKIP Mxu kválsztás Feldt: Adott egy E-bel eleeket elsoroló t obektu és egy :E H üggvéy. A H hlzo deáltuk egy teles redezés relácót. Feltesszük hogy t e üres. Hol vesz el z üggvéy t elee xáls értékét? Speckácó: Algortus: A = t:eore x:h ele:e E = t=t t>0 U = x ele x e e t t.frst x ele:= t.curret t.curret t.next t.ed t.curret>x x ele:= t.curret t.curret t.next SKIP
Kválsztás Feldt: Adott egy E-bel eleeket elsoroló t obektu és egy :EL eltétel. Keressük t beárás sorá z első oly ele értéket ely kelégít :EL eltételt h tuduk hogy bztos v lye. Speckácó: Algortus: A = t:eore ele:e t.frst E = t=t 1.. t]: t U = elet select ele t.curret elet t.next Leárs keresés ele:=t.curret Feldt: Adott egy E-bel eleeket elsoroló t obektu és egy :EL eltétel. Keressük t beárás sorá z első oly ele értéket ely kelégít :EL eltételt. Speckácó: A = t:eore l:l ele:e E = t=t U = l elet serch e et Feltételes xukeresés Algortus: l := hs; t.frst l t.ed ele := t.curret l := ele t.next Feldt: Adott egy E-bel eleeket elsoroló t obektu egy :EL eltétel és egy :E H üggvéy. A H hlzo deáltuk egy teles redezés relácót. Htározzuk eg t zo eleehez redelt szert értékek között leggyobbt elyek kelégítk eltételt. Speckácó: A = t:eore l:l x:h ele:e E = t=t U = l x ele = x e et e Algortus: l:= hs; t.frst t.ed t.curret t.curret l t.curret l SKIP t.curret>x l x ele := x ele:= t.curret t.curret SKIP gz t.curret t.curret t.next
Megegyzések: 1. A xu keresés leárs keresés kválsztás e egtlált ele dexét he egtlált eleet dák vssz. 2. A leárs keresésél és kválsztásál z eredéyek között szerepel g elsoroló s. Eek z ok z hogy eél két tételél korább s leállht eldolgozás t hogy elsorolás véget ére és ekkor rdk ég el e sorolt el e dolgozott eleek. Ezeket z eleeket tovább eldolgozásk lehet lávet h elsorolót tovább hszáluk. Felhívuk zob gyelet rr hogy h egy ár korább hszált elsorolóvl dolgozuk tovább kkor e szbd Frst űvelettel úrdít elsorolást. 3. Kválsztásál e kell elsoroló áltl szolgálttott értéksoroztk végesek lee hsze ez tétel ás ódo grtál eldolgozás véges lépésbe törtéő leállását. 4. A progrozás tételek lklzáskor h körültektőe áruk el szbd z lgortuso htékoyságot vító ódosításokt te. Ilye például z kor helyett hogy sokszor egyás utá lekérdezzük t.curret értékét zt k első lekérdezéséél egy segédváltozób eletük. A xu kválsztás lletve eltételes xukeresés eseté eldolgozás eredéye között szerepel d egtlált xáls érték d pedg z ele elyhez xáls érték trtozk. Kokrét esetekbe zob cs dg dkettőre szükség. Például oly esetekbe hol üggvéy dettás zz egy ele és k értéke egegyezk xáls ele és xáls érték közül elég csk z egyket ylvátrt z lgortusb. 5. Nevezetes elsorolók lklzás eseté érdees sát speckácós elöléseket bevezet. Ilyekor ugys speckácót e egy bsztrkt elsorolór t:eore he közvetleül eldolgozdó gyűteéyre tervllur töbre hlzr szekvecáls álr oglzzuk elsoroláshoz hszált segéddtokkl. Egy szekvecáls putál elsorolóát g szekvecáls putál z bból utolár kolvsott ele és z olvsás státusz reprezetál. Szekvecáls putálok eldolgozás eseté ehhez egállpításhoz gzíthtuk speckácós elöléseket. Ilyekor z állpottérbe gát szekvecáls putált vesszük el és z ex x szekvecáls putál zt elöl hogy sorb egyás utá k kruk olvs z x ál ely egy sorozt eleet. Eél ogv korább bevezetett speckácós elölésekbe szereplő et hol t elsoroló kduló állpot szbóluot szekvecáls putál beáráskor kcserélhetük z ex x szekvecáls putál kezdet állpot szbólur. Az ex elölés terészetese e zt elet hogy z utolár kolvsott eleet trtlzó változót progrb s e-ek kell elevez de célszerű ezt te. összegzés: szálálás: xu kválsztás: eltételes xukeresés: s e ex c 1 ex e xele x e e x lxele x e ex e Láthttuk hogy kválsztás és leárs keresés zelőtt s leállht hogy elsorolás beeeződe és ezért otos eredéye eze progrozás tételekek ez be e eezett elsoroló s. Aeybe z stex:red űveletet hszáluk x szekvecáls putál beárásár kkor egkezdett t elsorolót z st e x hárssl helyettesíthetük speckácós elölés bloldlá. leárs keresés: lele st e x serch e ex kválsztás: ele st e x select ele elex
Az st és z e zob redudás orácót hordoz. Kválsztásál z ele zoos z e-vel z st pedg bztos or hsze lyekor grtált tláluk keresett eleet. Leárs keresésél st=bor h keresés skertele zz l értéke hs; skeres teráláskor h l gz z ele zoos z e-vel z st pedg bztos or. Ezért egegedük et elölés de oly egyszerűsítését e egy z egyértelűség rovásár. Ilye például z lább: leárs keresés: lelex serch e ex kválsztás: elex select ele elex Gykr előordul hogy egy ár előre olvsott szekvecáls putálr kell egy progrozás tételt lklz zz kor eldolgozdó eleek közül z első ár z e segédváltozób v több pedg z x szekvecáls putálb. Ilyekor e csk z x eleet he előtte ég z e trtlát s el kell soroluk. Az lgortusb ez csk yt elet hogy cklust e előz eg Frst szekvecáls putálál stex:red űvelet speckácób példkét z összegzést és kválsztást duk eg pedg z lább elölést hszáluk hol z előre olvsás eredéyekét beolvsott eleet z e z olvsás utá ált pedg z x elöl: összegzés: s e e e x kválsztás: elex select ele ele ex b Egy h hlz elsorolóát g h hlz reprezetál. Ilyekor speckácóál et hol t elsoroló kduló állpot szbólu helyett z eh h hlz kezdet állpot szbóluot írhtuk. Jeletése: vegyük sorb egyás utá hlz eleet. c Idexelhető gyűteéyek vektor átrx sorozt stb. eseté elsorolót gyűteéy és z zo véggvezetett dex átrxokál dexpár reprezetálák. Tuldoképpe lyekor közvetleül e s gyűteéybe tárolt értékeket he zok dexet soroluk el hsze egy dexhez bárkor hozzáredelhető z áltl egelölt érték. Ilyekor például egy xu kválsztásál z üggvéy sohse dettás ert z redel z dexhez elsorolt elehez gyűteéy egelelő értékét. A speckácókb szereplő ele lyekor egy dexet trtlz ezért z lábbkb d-két átrxok eseté dupl dexkét: d d eleítük eg. Eze egotolások tt hszálhtuk korább eezetek speckácós elöléset elyből z s láthtó hogy korább tervlluos progrozás tételek elsorolós tételek specáls esete. összegzés: s = v ] szálálás: c 1 v ] xu kválsztás: x d = x v ] eltételes xukeresés: l x d = x v ] v ] leárs keresés: l d serch v ] kválsztás: d select v ]
Már többször elhívtuk gyelet rr hogy keresés és kválsztás előbb leállht t g elsorolás. Vektorok eseté ég el e dolgozott eleek z d dex utá állk ezért zok külö elölésére cs szükség. d Az -es átrxokr bevezetett speckácós elölések stdrd elsorolás eseté csk bb térek el vektorokétól hogy dexpárokt trtlzk. összegzés: s = ] 1 1 szálálás: 1 1 1 ] c xu kválsztás: x d d = ] x 1 1 eltételes xukeresés: l x d d = ] ] x 1 1 leárs keresés: ] d d l 1 1 serch kválsztás: ] d d 1 1 select