\begin{document} Algo 2 Ajánlott irodalom: Algoritmusok, (Rónyai, Szabó, ?) Ismétlés Algo1 -> ADT, ADS, etc Verem Axiómák 1. Üres-e(Üres) Igaz 2. ... 5. etc 1. ADT 2. ADS szrekezeti gráf + { műveletek + axiómák } -> ADT pl (10)->(20)->(30)->(40) lehet pl verem, sor (attól függ, milyen műveletek ) 3. reprezentáci (1) tömbös (2) pointeres ---- Műveletigények 1. Buborékrendezés Alulról felfele a szomzédos elemek cseréjével felbuborékoztatjuk az elemeket 1. elem összehas. Ö(sz) = n - 1 2. elem n - 2 3. elem n - 3 etc Ö_{sz} = \frac{n(n - 1)}{2} = {\Theta}(n^2) vagy O(N^2) f: {\mathbb{N}} \rightarrow {R}_0^+ Def: O(g) = {f | {\exists}c>0, elég nagy n-re f(n) \leq cg(n) } O(g) = {f | {\exists}c>0, elég nagy n-re f(n) < cg(n) } {\Omega}(g) = {f | {\exists}c>0, elég nagy n-re f(n) \geq cg(n) } {\omega}(g) = {f | {\exists}c>0, elég nagy n-re f(n) > cg(n) } Összehasonlító rendezések Műveletigénye (A) alsó becslés: műv. igény: ÖH(n) = {\Omega}(n \cdot log(n)) Döntési fa: * \forall alg-hoz konstruálható * igaz/hamis kérdések pl.: "A[3] > A[1]^2" füzet (1) n! levél (n elemet hányféleképp lehet sorbarendezni: n!) Beszúró rendezés 1 | 2 | 5 | 7 || 4 | 1 1 | 2 | 5 | 7 || [] | 1 1 | 2 | 5 | [] | 7 ||1 1 | 2 | [] | 5 | 7 ||1 1 | 2 | 4 | 5 | 7 ||1 n*log n es rendezések: verseny, kupac, összefésülő, gyors Verseny rendezés n = 2^k (binfa) (általában a tárhely igény miatt nem használják) füzet(2) Kupac renndezés Kupac: Def (ADS) -Teljes, balra tömörített, bnáris fa. -Szülő < Gyerek (kupactulajdonság) Műveletek (ADT) Beszúr, Mintöröl Füzet (3) Felszivárog(v) (logn) { ha v > szülő(v1, v2) { csere a kisebbel. } } Összefésölő Rendezés (Oszdmeg és uralkodj) = rekurzió Füzet Műv igény: k és l hosszú rendezett tömb esetén k + l - 1 műv igény: n \cdot log(n) n = 2^k T(n) = összehasonlítások T(n) \leq n - 1 + 2T(\frac{n}{2}) \leq n - 1 + 2 (\frac{n}{2} - 1 + 2T(\frac{n}{4})) \leq \leq n - 1 + 2(\frac{n}{2}) + 4T(\frac{n}{4}) + ... + 2^{k - 1}(\frac{n}{2^{k - 1}}) + 2^{k - 1} + 2^{k - 1} T(\frac{n}{2^{k-1}}) = = k \ cdot n - k = nlogn - log_2n = O(nlog_2n) Gyorsrendezés Veszünk egy véletlen számon 1 től n ig, Műv igény ... C(n) = (n - 1) + \frac{2}{n}(C(1) + C(2) + ... + C(n)) -C(n - 1) = n - 2 + \frac{2}{n - 1}(c(1)+ ... + C(n - 1)) -------------------------------------------------------- Rendezés után: \frac{C(n)}{n + 1} = \frac{2(n - 1)}{n(n + 1)} + \frac{c(n - 1)}{n} < \frac{2}{n} + \frac{C(n - 1)}{n} < < \frac{2}{n} + \frac{2}{n-1} + \frac{B(n-2){n-1}} < ... (2 kiemel) ... < 2(\frac{1}{n} + \frac{1}{n-1} + \frac{1}{n-2} + ... + \frac{1}{2} + \frac{1}{1}) ~= 2nlogn = O(n log n) \end{document}