]> mj.ucw.cz Git - ads1.git/commitdiff
Narychloslidy ke QS.
authorMartin Mares <mj@ucw.cz>
Mon, 12 Mar 2007 14:33:25 +0000 (15:33 +0100)
committerMartin Mares <mj@ucw.cz>
Mon, 12 Mar 2007 14:33:25 +0000 (15:33 +0100)
slides/quicksort.tex
slides/slidemac.tex

index 860d0377371aacbc8ff00243c096fb41e009b560..e8ce8b74975d68ac95a35fcd91caf2fd489f1e00 100644 (file)
@@ -3,11 +3,14 @@
 \language=\czech
 \chyph
 
+\def\cmt{~~\red}
+
 \slide{Evoluce QuickSortu: Pùvodní algoritmus}
 
 $\<Sort>(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 @@ $\<Sort>(X):$
 $\<Sort>(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 @@ $\<Sort>(X, a, b):$
 $\<Sort>(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<r$, pøidejme $(a,r)$ do~$S$.
-\::Pokud $l<b$, pøidejme $(l,b)$ do~$S$.
+\::{\green Pokud $a<r$, pøidáme $(a,r)$ do~$S$.}
+\::{\green Pokud $l<b$, pøidáme $(l,b)$ do~$S$.}
 \endalgo
 
 \endslide
@@ -61,42 +66,44 @@ $\<Sort>(X):$
 $\<Sort>(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}
 
 $\<Sort>(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
index 1da866c8b09ee1f02ecfe31beaa0f93d6cb61629..283169700eb175997a6a5af4ef2d5c592c64de02 100644 (file)
@@ -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}