From: Martin Mares Date: Mon, 12 Mar 2007 14:33:25 +0000 (+0100) Subject: Narychloslidy ke QS. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=ce7c2254bbf9f9f2201203c1de61a4a8f267229f;p=ads1.git Narychloslidy ke QS. --- diff --git a/slides/quicksort.tex b/slides/quicksort.tex index 860d037..e8ce8b7 100644 --- a/slides/quicksort.tex +++ b/slides/quicksort.tex @@ -3,11 +3,14 @@ \language=\czech \chyph +\def\cmt{~~\red} + \slide{Evoluce QuickSortu: Pùvodní algoritmus} $\(X):$ \algo +\itemcount=-1 \:Pokud $\vert X \vert \le 1$, vrátíme $X$. \:Vybereme prostøední prvek~$X$ jako pivota $p$. \:$M \leftarrow \{ x\in X : x < p \}$, \\ @@ -25,6 +28,7 @@ $\(X):$ $\(X, a, b):$ \algo +\itemcount=-1 \:Pokud $a\ge b$, vrátíme se. \:$m\leftarrow \lfloor (a+b)/2 \rfloor$, $p \leftarrow X[m]$. \:Pøeházíme prvky tak, aby nalevo byly $\le p$, napravo $\ge p$: @@ -44,14 +48,15 @@ $\(X, a, b):$ $\(X):$ \algo +\itemcount=-1 \:Pokud $n=\vert X\vert \le 1$, skonèíme rovnou. -\:$S\leftarrow\{ (1,n) \}$. -\:Dokud $S\ne\emptyset$, opakujeme: -\::Vybereme $(a,b)$ z~$S$. +\:{\green $S\leftarrow\{ (1,n) \}$.} +\:{\green Dokud $S\ne\emptyset$, opakujeme:} +\::{\green Vybereme $(a,b)$ z~$S$.} \::$m\leftarrow \lfloor (a+b)/2 \rfloor$, $p \leftarrow X[m]$. \::Pøeházíme prvky \dots\ $\rightarrow l,r$. -\::Pokud $a(X):$ $\(X):$ \algo +\itemcount=-1 \:Pokud $n=\vert X\vert \le 1$, skonèíme rovnou. -\:$a=1$, $b=n$, $S=\emptyset$. -\:Opakujeme: +\:{\green $a\leftarrow 1$, $b\leftarrow n$, $S\leftarrow\emptyset$.} +\:{\green Opakujeme:} \::$m\leftarrow \lfloor (a+b)/2 \rfloor$, $p \leftarrow X[m]$. \::Pøeházíme prvky \dots\ $\rightarrow l,r$. -\::Pokud $r-a > b-l$, prohodíme $(a,r) \leftarrow (l,b)$. \\ {\sit (interval $(a,r)$ je teï ten men¹í)} -\::Pokud $l\ge b$: {\sit (oba intervaly jsou triviální)} -\:::Pokud $S=\emptyset$, skonèíme. -\:::Jinak odebereme $(a,b)$ z~$S$. -\::Jinak: {\sit (vìt¹í je netriviální)} -\:::Pokud $a\ge r$, pøidej $(a,r)$ do~$S$ {\sit (men¹í také)} -\:::$(a,b) \leftarrow (l,b)$. {\sit (pokraèujeme vìt¹ím)} +\::{\green Pokud $r-a > b-l$, prohodíme $(a,r) \leftarrow (l,b)$. \\ {\cmt (interval $(a,r)$ je teï ten men¹í)}} +\::{\green Pokud $l\ge b$: {\cmt (oba intervaly jsou triviální)}} +\:::{\green Pokud $S=\emptyset$, skonèíme.} +\:::{\green Jinak odebereme $(a,b)$ z~$S$.} +\::{\green Jinak: {\cmt (vìt¹í je netriviální)}} +\:::{\green Pokud $a\ge r$, pøidáme $(a,r)$ do~$S$ {\cmt (men¹í také)}} +\:::{\green $(a,b) \leftarrow (l,b)$. {\cmt (pokraèujeme vìt¹ím)}} \endalgo {\sit Nyní staèí $\O(\log n)$ pamìti pro zásobník.} \endslide -\slide{Evoluce QuickSortu: Zastavíme se døív} +\slide{Evoluce QuickSortu: Zkøí¾íme s~InsertSortem} $\(X):$ \algo -\:Pokud $n=\vert X\vert \le K$, setøídíme InsertSortem. +\itemcount=-1 +\:{\green Pokud $n=\vert X\vert \le K$, setøídíme InsertSortem.} \:$a=1$, $b=n$, $S=\emptyset$. \:Opakujeme: \::$m\leftarrow \lfloor (a+b)/2 \rfloor$, $p \leftarrow X[m]$. \::Pøeházíme prvky \dots\ $\rightarrow l,r$. -\::Pokud $r-a > b-l$, prohodíme $(a,r) \leftarrow (l,b)$. \\ {\sit (interval $(a,r)$ je teï ten men¹í)} -\::Pokud $b-l \le K$: {\sit (oba intervaly jsou malé)} +\::Pokud $r-a > b-l$, prohodíme $(a,r) \leftarrow (l,b)$. \\ {\cmt (interval $(a,r)$ je teï ten men¹í)} +\::{\green Pokud $b-l \le K$: {\cmt (oba intervaly jsou triviální)}} \:::Pokud $S=\emptyset$, skonèíme. \:::Jinak odebereme $(a,b)$ z~$S$. -\::Jinak: {\sit (vìt¹í je netriviální)} -\:::Pokud $r-a > K$, pøidej $(a,r)$ do~$S$ {\sit (men¹í také)} -\:::$(a,b) \leftarrow (l,b)$. {\sit (pokraèujeme vìt¹ím)} -\:Dotøídíme posloupnost InsertSortem. +\::Jinak: {\cmt (vìt¹í je netriviální)} +\:::{\green Pokud $r-a > K$, pøidej $(a,r)$ do~$S$ {\cmt (men¹í také)}} +\:::$(a,b) \leftarrow (l,b)$. {\cmt (pokraèujeme vìt¹ím)} +\:{\green Dotøídíme posloupnost InsertSortem.} \endalgo \endslide diff --git a/slides/slidemac.tex b/slides/slidemac.tex index 1da866c..2831697 100644 --- a/slides/slidemac.tex +++ b/slides/slidemac.tex @@ -92,3 +92,7 @@ \futurelet\next\algoitemh} \def\algoitemh{\ifx\next:\let\next=\algohang\else\let\next=\relax\fi\next} \def\algohang:{\advance\hangindent by 2em \hskip 2em\futurelet\next\algoitemh} + +\def\popcolor{\special{color pop}} +\def\green{\special{color push NavyBlue}\aftergroup\popcolor} +\def\red{\special{color push Magenta}\aftergroup\popcolor}