4.2. Rendezés. 1. Példa: A=R, és a reláció a kisebb < jel. Az aρb reláció azokat a számpárokat jelenti, amelyekre fennáll az a<b összefüggés.

Hasonló dokumentumok
Rendezés. 1. Példa: Legyen A=R, és a reláció a kisebb < jel. Az a b reláció azokat a számpárokat jelenti, amelyekre fennáll az a<b összefüggés.

Elsőbbségi (prioritásos) sor

VÉLETLENÍTETT ALGORITMUSOK. 1.ea.

(A TÁMOP /2/A/KMR számú projekt keretében írt egyetemi jegyzetrészlet):

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Kalkulus I. Első zárthelyi dolgozat szeptember 16. MINTA. és q = k 2. k 2. = k 1l 2 k 2 l 1. l 1 l n 6n + 8

Matematika B4 I. gyakorlat

Kétoldali hibás Monte Carlo algoritmus: mindkét válasz esetén hibázhat az algoritmus, de adott alsó korlát a hibázás valószínűségére.

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

Algoritmuselmélet 2. előadás

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

6. Elsőbbségi (prioritásos) sor

MATEMATIKA I. KATEGÓRIA (SZAKKÖZÉPISKOLA)

Számsorozatok. 1. Alapfeladatok december 22. sorozat határértékét, ha. 1. Feladat: Határozzuk meg az a n = 3n2 + 7n 5n létezik.

16. Az AVL-fa. (Adelszon-Velszkij és Landisz, 1962) Definíció: t kiegyensúlyozott (AVL-tulajdonságú) t minden x csúcsára: Pl.:

3. SOROZATOK. ( n N) a n+1 < a n. Egy sorozatot (szigorúan) monotonnak mondunk, ha (szigorúan) monoton növekvő vagy csökkenő.

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Rendezések. Összehasonlító rendezések

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

Számjegyes vagy radix rendezés

( a b)( c d) 2 ab2 cd 2 abcd 2 Egyenlőség akkor és csak akkor áll fenn

Nevezetes sorozat-határértékek

1. ábra. Számláló rendezés

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

1. ALGORITMUSOK MŰVELETIGÉNYE

2.5. A lineáris kongruencia egyenlet.

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

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

18. Differenciálszámítás

Leszámláló rendezés. 1. Végigmegyünk az A-n, és ha egy elem értéke i, akkor megnöveljük C[i] értékét eggyel.

Algoritmusok vektorokkal keresések 1

f (M (ξ)) M (f (ξ)) Bizonyítás: Megjegyezzük, hogy konvex függvényekre mindig létezik a ± ben

Hiba! Nincs ilyen stílusú szöveg a dokumentumban.-86. ábra: A példa-feladat kódolási változatai

VII. A határozatlan esetek kiküszöbölése

Adatbázis rendszerek Gy: Algoritmusok C-ben

Sorozatok A.: Sorozatok általában

2. Hatványsorok. A végtelen soroknál tanultuk, hogy az. végtelen sort adja: 1 + x + x x n +...

Haladó rendezések. PPT 2007/2008 tavasz.

ANALÍZIS I. TÉTELBIZONYÍTÁSOK ÍRÁSBELI VIZSGÁRA

Statisztika 1. zárthelyi dolgozat március 21.

Lajkó Károly Kalkulus I. példatár mobidiák könyvtár

Pályázat címe: Pályázati azonosító: Kedvezményezett: Szegedi Tudományegyetem Cím: 6720 Szeged, Dugonics tér

A statisztikai vizsgálat tárgyát képező egyedek összességét statisztikai sokaságnak nevezzük.

2. fejezet. Számsorozatok, számsorok

Sorozatok, határérték fogalma. Függvények határértéke, folytonossága

Eötvös Loránd Tudományegyetem Informatikai Kar. Analízis 1. Írásbeli beugró kérdések. Készítette: Szántó Ádám Tavaszi félév

Matematika I. 9. előadás

ALGEBRA. egyenlet megoldásait, ha tudjuk, hogy egész számok, továbbá p + q = 198.

Eötvös Loránd Tudományegyetem Informatikai Kar. Analízis 1. Írásbeli tételek. Készítette: Szántó Ádám Tavaszi félév

A G miatt (3tagra) Az egyenlőtlenségek két végét továbbvizsgálva, ha mindkét oldalt hatványozzuk:

10.M ALGEBRA < <

Kombinatorika. Variáció, permutáció, kombináció. Binomiális tétel, szita formula.

A függvénysorozatok olyanok, mint a valós számsorozatok, csak éppen a tagjai nem valós számok,

Matematikai játékok. Svetoslav Bilchev, Emiliya Velikova

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

A félév során előkerülő témakörök

1 k < n(1 + log n) C 1n log n, d n. (1 1 r k + 1 ) = 1. = 0 és lim. lim n. f(n) < C 3

BIOMATEMATIKA ELŐADÁS

Matematikai játékok. Svetoslav Bilchev, Emiliya Velikova

Eseme nyalgebra e s kombinatorika feladatok, megolda sok

XXVI. Erdélyi Magyar Matematikaverseny Zilah, február II.forduló -10. osztály

I. Függelék. A valószínűségszámítás alapjai. I.1. Alapfogalamak: A valószínűség fogalma: I.2. Valószínűségi változó.

Innen. 2. Az. s n = 1 + q + q q n 1 = 1 qn. és q n 0 akkor és csak akkor, ha q < 1. a a n végtelen sor konvergenciáján nem változtat az, ha

Gyakorló feladatok II.

A figurális számokról (IV.)

1. Adatok közelítése. Bevezetés. 1-1 A közelítő függvény

SZÁMELMÉLET. Vasile Berinde, Filippo Spagnolo

Kalkulus II., második házi feladat

(d) x 6 3x 2 2 = 0, (e) x + x 2 = 1 x, (f) 2x x 1 = 8, 2(x 1) a 1

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

NUMERIKUS SOROK II. Ebben a részben kizárólag a konvergencia vizsgálatával foglalkozunk.

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

14. Mediánok és rendezett minták

Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer

Felvételi tematika INFORMATIKA

Statisztika 1. zárthelyi dolgozat március 18.

194 Műveletek II. MŰVELETEK A művelet fogalma

Bevezető analízis II. példatár

Kvantum párhuzamosság Deutsch algoritmus Deutsch-Jozsa algoritmus

Lineáris kódok. u esetén u oszlopvektor, u T ( n, k ) május 31. Hibajavító kódok 2. 1

Matematikai statisztika

Diszkrét matematika II., 3. előadás. Komplex számok

Numerikus sorok. Kónya Ilona. VIK, Műszaki Informatika ANALÍZIS (1) Oktatási segédanyag

Programozás II. előadás

24. tétel A valószínűségszámítás elemei. A valószínűség kiszámításának kombinatorikus modellje.

Feladatok megoldása. Diszkrét matematika I. Beadandó feladatok. Bujtás Ferenc (CZU7KZ) December 14, feladat: (A B A A \ C = B)

Az új építőipari termelőiár-index részletes módszertani leírása

Debreceni Egyetem. Kalkulus példatár. Gselmann Eszter

NÉMETH LÁSZLÓ VÁROSI MATEMATIKA VERSENY 2013 HÓDMEZŐVÁSÁRHELY OSZTÁLY ÁPRILIS 8.

V. Deriválható függvények

7. Dinamikus programozás

Függvényhatárérték-számítás

4. Test feletti egyhatározatlanú polinomok. Klasszikus algebra előadás NE KEVERJÜK A POLINOMOT A POLINOMFÜGGVÉNNYEL!!!

KOMBINATORIKA. Készítette: Bordi István Tóth Árpád Gimnázium Debrecen,

Dr. Tóth László, Kombinatorika (PTE TTK, 2007) nem vagyunk tekintettel a kiválasztott elemek sorrendjére. Mennyi a lehetőségek száma?

Ha I < B, akkor mind az online algoritmusnak mind pedig az optimális offline algoritmusnak a költsége I, így B(I)/OPT(I)=1.

Debreceni Egyetem, Közgazdaság- és Gazdaságtudományi Kar. Feladatok a Gazdasági matematika I. tárgy gyakorlataihoz. Halmazelmélet

Átírás:

4.. Redezés Defiíció: A reláció Valamely A halmaz eseté a ρ A A részhalmazt az A halmazo értelmezett relációak evezzük. Azt modjuk, hogy az A halmaz a és b eleme a ρ relációba va, ha (a,b) ρ. Rövide ezt így írjuk: aρb.. Példa: A=R, és a reláció a kisebb < jel. Az aρb reláció azokat a számpárokat jeleti, amelyekre feáll az a<b összefüggés. Defiíció: A redezési reláció A ρ relációt redezési relációak evezzük az A halmazo, ha. reflexív, azaz aρa a A eseté;. aρb és bρa maga utá voja az a=b teljesülését; 3. trazitív, azaz aρb és bρc maga utá voja az aρc teljesülését; 4. atiszimmetrikus, azaz vagy az aρb, vagy a bρa áll fe a,b A eseté.. Példa: A valós számok közötti reláció. Redezésről olya adattípus eseté beszélhetük, amelyre értelmezve va egy redezési reláció. Tekitsük a sorozatot és aak is vegyük a tömbös realizációját. A redezés a sorozat elemeiek olya felsorolását jeleti, amelybe az egymást követő elemek a megadott relációba vaak. A tárgyalást valós számoko (legikább egészek) visszük végig és relációak a kisebb, egyelő relációt tekitjük. ami em csökketi az általáosságot. A redezés mid a mai időkig fotos iformatikai probléma. Gyakra jeleik meg mit egy agyobb probléma része. A redezési algoritmusokkal kapcsolatba több szempot szeriti igéy léphet föl. Ilyeek például az alábbiak: a. Helybe redezés. A redezés eredméye az eredeti helyé jeleje meg, legfeljebb kostas méretű többletmemória felhaszálása révé. b. A redezési idő legye miél rövidebb. c. Az algoritmus haszálja ki a kulcsok között már meglévő redezettséget. (Adaptivitás) d. A redezés legye stabil, azaz őrizze meg az azoos kulcsú rekordok eseté a rekordok egymáshoz képesti eredeti sorredjét. (Például telefoszámlák készítésekor az azoos kulcsú előfizetői hívások időredi sorredje maradjo meg.) e. Az algoritmus csak a kulcsokat redezze a rekordokra mutató poiterekkel, vagy az összes rekordot mozgassa. f. Belső redezés legye (csak a belső memóriát vegye igéybe a redezéshez), vagy külső redezés legye (háttértárakat is igéybe vehet). g. Összehasolításo alapuljo a redezés, vagy azt e vegye igéybe az algoritmus. (Ez utóbbi esetbe a kulcsokra további megszorításokat kell tei.) h. Optimális legye a redezési algoritmus, vagy sem. (Nem biztos, hogy az adatok az optimális algoritmus által megkívát módo vaak megadva.) i. Az összes redezedő adatak redelkezésre kell-e állia a redezés teljes folyamata alatt, vagy sem. Nem lehet kizári a em optimális algoritmusokat sem az alkalmazásokból, mert egy probléma megoldásába em csak a redezési algoritmus optimalitása az egyetle szempot a problémamegoldás hatékoyságára. (Hiába gyors az algoritmus, ha az adatok em a kívát formába állak redelkezésre, és a koverzió lerotja a hatékoyságot.)

Adatstruktúrák, algoritmusok - - 4... A beszúró redezés A beszúró redezés alapelve agyo egyszerű. A sorozat második elemétől kezdve (az első ömagába már redezett) egyekét a kulcsokat a sorozat eleje felé haladva a megfelelő helyre mozgatjuk összehasolítások révé. A sorozatak a vizsgált kulcsot megelőző elemei midig redezettek az algoritmus sorá. 3. Példa: Az alábbi kulcsok eseté yíl mutatja a mozgatadó kulcsot és a beszúrás helyét. 8 4 3 6 5 9 7 4 8 3 6 5 9 7 4 8 3 6 5 9 7 3 4 8 6 5 9 7 3 4 8 6 5 9 7 3 4 6 8 5 9 7 3 4 5 6 8 9 7 3 4 5 6 8 9 7 3 4 5 6 7 8 9 4... algoritmus Beszúró redezés // T( ) = Θ( ) BESZÚRÓ_RENDEZÉS ( A ) // Iput paraméter: A - a redezedő tömb 3 // Output paraméter: A - a redezett tömb 4 // 5 FOR j TO hossz [ A ] DO 6 kulcs A j 7 Beszúrás az A...j redezett sorozatba 8 i j 9 WHILE i > 0 és A i > kulcs DO A i + A i DEC(i) A i + kulcs 3 RETURN (A) = -et! Feladat: Készítsük el a beszúró redezésre a pszeudokódot, ha a kulcsok egy kétszerese lácolt listával vaak megadva! Feladat: Számítsuk ki a beszúró redezésre a T( ) Θ( )

Adatstruktúrák, algoritmusok - 3-4... Az összefésülő redezés Az összefésülő redezés alapelve az összefésülés műveleté alapszik, amely két redezett tömbből egy új redezett tömböt állít elő. Az összefésülés folyamata: Midkét tömbek megvizsgáljuk az első elemét. A két elem közül a kisebbiket beírjuk az eredméytömb első szabad eleme helyére. A felszabaduló helyre újabb elemet veszük abból a tömbből, ahoa előzőleg a kisebbik elem jött. Ezt a tevékeységet folytatjuk midaddig, míg valamelyik kiiduló tömbük ki em ürül. Ezutá a még vizsgálat alatt lévő elemet, valamit a megmaradt másik tömb további elemeit sorba az eredméytömbhöz hozzáírjuk a végé. Az eredméytömb em lehet azoos egyik bemeeti tömbbel sem, vagyis az eljárás em helybe végzi az összefésülést. Legye ÖSSZEFÉSÜL ( A, p, q, r ) az az eljárás, amely összefésüli az A p.. q és az A q +.. r résztömböket, majd az eredméyt az eredeti A p.. r helyre másolja vissza. Az eljárás lieáris méretű további segédmemóriát igéyel. Az összefésülés időigéye Θ(), ha összese elemük va. (Egy meetbe elvégezhető és az kell is hozzá.) Defiíció: Az oszd meg és uralkodj elv Az oszd meg és uralkodj elv egy algoritmus tervezési stratégia A problémát olya kisebb részekre osztjuk föl, amelyek rekurzíva megoldhatók. Ezutá egyesítjük a megoldásokat. Az összefésülő redezés oszd meg és uralkodj típusú algoritmus, melyek az egyes fázisai: Felosztás: A tömböt két elemű részre osztjuk Uralkodás: Rekurzív összefésüléses módo midkettőt redezzük. (Az elemű már redezett) Egyesítés: A két részsorozatot összefésüljük. 4... algoritmus Összefésülő redezés (Merge Sort) T // ( ) = Θ( log ) ÖSSZEFÉSÜLŐ_RENDEZÉS ( A, p, r ) // Iput paraméter: A - a tömb, melyek egy részét redezei kell 3 // p - a redezedő rész kezdőidexe 4 // r - a redezedő rész végidexe 5 // Output paraméter: A - a redezett résszel redelkező tömb 6 // 7 IF p < r 8 THEN p + r q 9 ÖSSZEFÉSÜLŐ_RENDEZÉS ( A, p, q ) 0 ÖSSZEFÉSÜLŐ_RENDEZÉS ( A, q +, r ) ÖSSZEFÉSÜL ( A, p, q, r ) RETURN (A) A teljes tömb redezését megoldó utasítás: ÖSSZEFÉSÜLŐ_RENDEZÉS(A,,hossz[A]). Az összefésülő redezés időigéye

Adatstruktúrák, algoritmusok - 4 - Felosztás: Θ () Uralkodás: Egyesítés: Θ ( ) T T ( ) = ( ) Θ, T + Θ ( ), ha ha = > ( ) ( ) Az algoritmus időigéye megkapható a mester tétel. potja alapjá: T = Θ log. 4..3. A Batcher-féle páros-páratla összefésülés Az eljárás csak az összefésülést teszi hatékoyabbá. Nem öálló redező módszer. Nagy előye, hogy párhuzamosíthatók a lépései. Legye két redezett sorozatuk: A = {a,,a l } B = {b,,b m } A két sorozat összefésülése adja a C = {c,,c l+m } sorozatot. Az összefésülés módja a következő: Midkét kiiduló sorozatból kettőt képezük, a páratla idexű és a páros idexű elemek sorozatait: A = {a,a 3,a 5, } B = {b,b 3,b 5, } A = {a,a 4,a 6, } B = {b,b 4,b 6, } Összefésüljük az A,B sorozatokat, eredméye az U sorozat. Összefésüljük az A,B sorozatokat, eredméye a V sorozat. Összefésüljük az U és V sorozatokat, eredméy a C sorozat. Tétel: Bizoyítás A Batcher-féle összefésülés tétele A Batcher összefésülés sorá c i- = mi { u i, v i } és c i = max { u i, v i }, i ( l + m ) / Fogadjuk el kiiduláskét igazak azt a feltevést, hogy C elejéből páros számú elemet véve azok között azoos számú U és V elem va. Ekkor {c,,c (i-) }= {u,,u i- } {v,,v i- } és {c,,c i }= {u,,u i } {v,,v i } Ebből viszot {c i-,c i }={u i,v i }, ahoa c i- < c i miatt adódik a tétel állítása. A feltételezésük bizoyítása: Legye {c,,c k }={a,,a s } {b,,b k-s }. Ezek közül U-ba kerül s/ elem az A-ból (az A páratla idexű elemei) és (k-s)/ elem a B-ből (a B páros idexű elemei), Valamit V-be kerül s/ elem az A-ból (az A páros idexű elemei) és (k-s)/ elem a B-ből (a B páratla idexű elemei). Ie az U-beliek száma s/ + (k-s)/ = k és a V-beliek száma s/ + (k-s)/ = k 4..4. Gyorsredezés (oszd meg és uralkodj típusú algoritmus) Felosztás: Az A p.. r tömböt két emüres A p... q és A q +... r részre osztjuk úgy, hogy A p... q mide eleme kisebb egyelő legye, mit A q +... r bármely eleme. (A megfelelő q meghatározadó.) Uralkodás: Az A p... q és A q +... r résztömböket rekurzív gyorsredezéssel redezzük. Egyesítés: Nics rá szükség, mivel a tömb már redezett. (A saját helyé redeztük.)

Adatstruktúrák, algoritmusok - 5-4..4.. algoritmus Gyorsredezés (Quick Sort) T Θ T = Θ log // ( ) ( ) =, átlagos: ( ) ( ) GYORSRENDEZÉS(A,p,r) // Iput paraméter: A - a tömb, melyek egy részét redezei kell 3 // p - a redezedő rész kezdőidexe 4 // r - a redezedő rész végidexe 5 // Output paraméter: A - a redezett résszel redelkező tömb 6 // 7 IF p < r 8 THEN FELOSZT ( A, p, r, A p, q) // 4..5. algoritmus 9 GYORSRENDEZÉS ( A, p, q ) 0 GYORSRENDEZÉS ( A, q+, r ) RETURN (A) A gyorsredezés időigéye: A legrosszabb eset: a felosztás mide lépésbe, elemű T () = Θ(), T ( ) = T ( ) + Θ( ) = T + Θ = T + Θ + Θ = K T ( ) ( ) ( ) ( ) ( ) ( ) = = T + Θ + Θ + K+ Θ = Θ k = Θ k= () () ( ) ( ) ( ) A legjobb eset:, a felosztás, ekkor T = Θ, () () T ( ) = T + Θ( ), ha > Ez megegyezik az összefésülő módszer formulájával, tehát T ( ) = Θ( log ) Megjegyzés: ha a felosztás aráya álladó pl. 0 9, 0, akkor a rekurziós formula: 9 T + + 0 0 Eze túlmeőe az átlagos értékre is T ( ) = T T Θ( ). Bizoyíthatö, hogy ekkor is ( ) = Θ( log ) ( ) = Θ( log ) T. adódik. 4..5. A buborékredezés A buborékredezésél az egymás mellett álló elemeket hasolítjuk össze, és szükség eseté sorredjüket felcseréljük. Ezt midaddig folytatjuk, míg szükség va cserére. 4..5.. algoritmus Buborékredezés (Bubble Sort) T // ( ) = Θ( ) BUBORÉKRENDEZÉS(A) // Iput paraméter: A - a redezedő tömb

Adatstruktúrák, algoritmusok - 6-3 // Output paraméter: A - a redezett tömb 4 // 5 j 6 REPEAT emvoltcsere igaz 7 FOR i hossz[a] DOWNTO j DO 8 IF A i < A i - 9 THEN csere A i A i - 0 emvoltcsere hamis INC(j) UNTIL emvoltcsere 3 RETURN (A) Időigéy a legrosszabb esetbe: (-)/. Sok a csere, az elem lassa kerül a helyére. 4..6. A Shell redezés (redezés fogyó övekméyel) A Shell redezés a buborékredezésél tapasztalt lassú helyrekerülést igyekszik felgyorsítai azáltal, hogy egymástól távol álló elemeket hasolít és cserél fel. A távolságot fokozatosa csökketi, míg az em lesz. Mide övekméy eseté beszúrásos redezést végez az adott övekméyek megfelelő távolságra álló elemekre. Mire a övekméy lesz, sok elem már majdem a helyére kerül. A övekméyek felépítése. Haszáljuk t számú övekméyt. Legyeek ezek h..t. A követelméy: h t =, és h i + < h i, i=,, t - Irodalmi javasolt övekméyadatok:, 3, 6, 8, 4,, t= log - h i- =h i, 40, 3, 4, h i- =3h i + 3, 5, 7, 3, h i- =h i + 4..6.. algoritmus Shell redezés //, T( ) = Θ( ) SHELL_RENDEZÉS(A) // Iput paraméter: A - a redezedő tömb 3 // Output paraméter: A - a redezett tömb 4 // 5 FOR M TO t DO 6 K h[m] 7 S - k 8 FOR i k + TO hossz[a] DO 9 x A i 0 j i - k IF s = 0 THEN s - k 3 s s + 4 A s x

Adatstruktúrák, algoritmusok - 7-5 WHILE x < A j DO 6 A j + k A j 7 j j - k 8 A j + k x 9 RETURN (A) Megjegyzés: A hossz[a] a redezedő elemek számát jelöli. Az A tömböt az elejé még kiegészítjük t darab rekesszel, amelyekbe meet közbe a strázsa elemek kerülek., Időigéy: alkalmas övekméy választással leszorítható T( ) Θ( ) 4..7. A miimum kiválasztásos redezés = -re. Hossz[A]- -szer végigmegyük a tömbö. Mide alkalommal eggyel későbbi elemtől iduluk. Megkeressük a miimális elemet, és azt az aktuális meet első elemével felcseréljük. 4..7.. algoritmus Miimum kiválasztásos redezés T = Θ // ( ) ( ) SHELL_RENDEZÉS(A) // Iput paraméter: A - a redezedő tömb 3 // Output paraméter: A - a redezett tömb 4 // 5 FOR i TO hossz[a]- DO 6 // miimumkeresés 7 k i 8 x A i 9 FOR j i + TO hossz[a] DO 0 IF A j < x THEN k j x A j 3 // az i. elem és a miimum felcserélése 4 A k A i 5 A i x 6 RETURN (A) Időigéy: összehasolításszám T( ) Θ( ) =. 4..8. Négyzetes redezés Felosztjuk az A tömböt számú elemet tartalmazó részre (alcsoportra). Midegyikből kiemeljük (eltávolítjuk) a legkisebbet. A kiemeltek alkotják a főcsoportot. Kiválasztjuk a legkisebbek legkisebbikét ( a legkisebbet a főcsoportból ) és azt az eredméytömbbe írjuk, a főcsoportból pedig eltávolítjuk ( töröljük ). Helyére abból az alcsoportból ahoa ő jött újabb legkisebbiket emelük be a főcsoportba. Az eljárást folytatjuk, míg az elemek el em fogyak a főcsoportból.

Adatstruktúrák, algoritmusok - 8 -,5 Időigéy: összehasolításszám T ( ) Θ( ) = Θ( ) =. Továbbfejlesztett változat, amikor /3 számú elem va egy fő-főcsoportba és /3 számú főcsoport va, midegyikbe /3 számú elemmel, melyek midegyikéhez egy /3 elemszámú 4 3 = Θ = Θ 3 T alcsoport tartozik. A redezés elve a fetihez hasoló. Időigéy: ( ) ( ) 4..9. A Stirlig formula és az Alsó korlát összehasolító redezésre tétel Tétel: Bizoyítás A Stirlig formula Igaz az alábbi összefüggés az!-ra: + ( + ) <! <, =3,4,5, e e Az egyelőtleséget a logaritmusra látjuk be. A logaritmus függvéy kokáv és emiatt írható: l l l l (! ) = l + l 3 + l 4 + K+ l (! ) > l x dx = l x dx = [ x l x] (! ) = l [] x = l ( ) = l + > l = l + l + l 3 + l 4 + K+ l x dx = x + + + (! ) < l x dx = l x dx = [ x l x] [ x] = = ( + ) l ( + ) ( + ) = ( + ) l ( + ) () Az összehasolító módszerek dötési fája

Adatstruktúrák, algoritmusok - 9 - a a? ige em a a 3? a a 3? ige em ige em,, 3,, 3 a a 3? a a 3? ige em ige em, 3,, 3, 3,, 3,, Tétel: Bizoyítás Alsó korlát összehasolító redezésre Bármely elemet redező dötési fa magassága T ( ) = Ω( log ) Egy h magasságú dötési fa leveleiek száma legfeljebb h. Mivel mide permutációt redezi kell tudia az algoritmusak, és összese! permutáció lehetséges, ezért a dötései fáak h legalább! levele kell legye. Tehát feáll. Logaritmálva: h log!. A Stirlig formula szerit h log = log loge. e Tehát: h = Ω log ( )! ( )!>. Behelyettesítve: e 4..0. Lieáris idejű redezők: A leszámláló redezés A lieáris idejű redezők em haszálják az összehasolítást. A leszámláló redezés ( = bisort, ládaredezés) bemeete és k közötti egész szám. Időigéy: T ( ) = Θ( + k). Ha k = Θ( ), akkor a redezési idő is T ( ) = Θ( ), ahol =hossz[a]. Az elemeket az A.. tömbbe helyezzük el. Szükség va további két tömbre: B.. az eredméyt tárolja majd, C..k segédtömb.

Adatstruktúrák, algoritmusok - 0 - A redezés léyege, hogy A mide elemére meghatározza a ála kisebb elemek számát. Ez alapjá tudja az elemet a kimeeti tömb megfelelő helyére tei. Stabil eljárás: az azoos értékűek sorredje megegyezik az eredetivel 4..0.. algoritmus Leszámláló redezés // T ( ) = Θ( ) LESZÁMLÁLÓ_RENDEZÉS ( A, k, B ) // Iput paraméter: A - a redezedő tömb 3 // k kulcs felső korlát, pozitív egész 4 // Output paraméter: B - a redezett tömb 5 // 6 FOR i TO k DO 7 C i 0 8 FOR j TO hossz[a] DO 9 INC ( C Aj ) 0 // C i azt mutatja, hogy háy i értékű számuk va FOR i TO k DO C i Ci + Ci 3 // C i most azt mutatja, hogy háy i-től em agyobb számuk va 4 FOR j hossz[a] DOWNTO DO 5 B C Aj A j 6 DEC ( C ) A j 7 RETURN (B) 4... A számjegyes redezés (radix redezés) Azoos hosszúságú szavak, strigek redezésére haszálhatjuk. (Dátumok, számjegyekből álló számok, kártyák, stb.) Legye d a szó hossza, k pedig az egy karaktere, mezőbe előforduló lehetséges jegyek, jelek száma, pedig az adatok száma. Időigéy: T ( ) = Θ( d ( + k) ) 4... algoritmus Számjegyes redezés // T ( ) = Θ( d ( + k) ) SZÁMJEGYES_RENDEZÉS ( A ) // Iput paraméter: A - a redezedő tömb 4 // Output paraméter: A - a redezett tömb 4 // 5 FOR i d DOWNTO DO 6 Stabil módszerrel redezzük az A tömböt az i. számjegyre 7 RETURN (A)

Adatstruktúrák, algoritmusok - - 4... Edéyredezés Feltételezzük, hogy a bemeet a [0, ) itervallumo egyeletes eloszlású számok sorozata. Felosztjuk a [0, ) itervallumot egyelő részre (edéyek). A bemeetet szétosztjuk az edéyek között, mide edéybe egy listát kezelve. Az azoos edéybe esőket beszúrásos módo redezzük. A végé a listákat egybefűzzük az elsővel kezdve. Várható időigéy: T ( ) = Θ( ) 4... algoritmus Edéyredezés // ( ) ( T = Θ ) EDÉNYRENDEZÉS ( A, L ) // Iput paraméter: A - a redezedő tömb, elemű 3 // Output paraméter: L - a redezett elemek listája 4 // Meet közbe szükség va egy elemű B tömbre, mely listafejeket tárol. Idexelése 0-val idul. 5 hossz[a] 6 FOR i TO DO 7 Beszúrjuk az A i elemet a listába B 8 FOR i 0 TO - DO 9 Redezzük a B i listát beszúrásos redezéssel 0 Sorba összefűzzük a B 0, B,, B - listákat. képezve az L listát RETURN (L) 4..3. Külső tárak redezése Külső tárak redezéséél az elérési és a mozgatási idő szerepe drasztikusa megő. Az összefésüléses módszerek jöek elsősorba számításba. A i Defiíció: A k hosszúságú futam file-ba Egy file k szomszédos rekordjából álló részét k hosszúságú futamak evezzük, ha bee a rekordkulcsok redezettek (pl.: övekedő sorredűek). Először alkalmas k-val (k= midig megfelel) a redezedő file-t két másik file-ba átmásoljuk úgy, hogy ott k hosszúságú futamok jöjjeek létre. Ezutá a két file-t összefésüljük egy-egy elemet véve midkét file-ból. Az eredméyfile-ba már k lesz a futamhossz.(esetleg a legutolsó rövidebb lehet). Ezt ismételgetjük a teljes redezettségig midig duplázva k értékét. Legye a rekordok száma. Egy meetbe rekordmozgás va a szétdobásál és az összefésülésél. A meetek száma legfeljebb log. Az időigéy: T ( ) = Θ( log ). Külső tárak redezéséek gyorsítása Az log em javítható az összehasolítások miatt. A szorzó kostasokat lehet csökketei. Változó futamhosszak: a file-ba meglévő természetes módo kialakult futamhosszakat vesszük figyelembe. A futamhatárok figyeléséek admiisztrálása bejö, mit további költség.

Adatstruktúrák, algoritmusok - - Több részfile haszálata eseté a szétdobás em két, haem több részre törtéik. Külö admiisztráció összefésülésél a kiürült file-ok figyelése. Polifázisú összefésülés alkalmazásakor em folytatjuk végig mide meetbe az összefésüléseket, haem a célfile szerepét midig a kiürült file veszi át és ide kezdjük összefésüli a többit Egy eset polfázisú összefésülésre, amikor kíosa lassú a módszer. A tábla belsejébe a fileok futamszáma szerepel, zárójelbe a futamok mérete. Kezdetbe az első file rekordból áll és egy a futamhossz, a második file 5 rekordból áll és szité egy a futamhossz. meet és futamszám File 3 4 5 6 () 0 (3) 0 (5) 0 5() 4() 3() () () 0 3 0 () 0 (4) 0 (6)