From: Martin Mares Date: Mon, 19 Mar 2007 22:01:08 +0000 (+0100) Subject: Opraveny slidy ke QS. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=6ef29734c27c5e8ae32239407771007c509eb2ba;p=ads1.git Opraveny slidy ke QS. --- diff --git a/slides/quicksort.tex b/slides/quicksort.tex index 7ff63ca..735a8cb 100644 --- a/slides/quicksort.tex +++ b/slides/quicksort.tex @@ -77,15 +77,15 @@ $\(X):$ \:Pokud $n=\vert X\vert \le 1$, skonèíme rovnou. \:{\new $a\leftarrow 1$, $b\leftarrow n$, $S\leftarrow\emptyset$.} \:{\new Opakujeme:} {\cmt (právì tøídíme $X[a],\ldots,X[b]$, $S$ je zásobník)} -\::$m\leftarrow \lfloor (a+b)/2 \rfloor$, $p \leftarrow X[m]$. -\::Pøeházíme prvky \dots\ $\rightarrow l,r$. -\::{\new Pokud $r-a > b-l$, prohodíme $(a,r) \leftarrow (l,b)$. \\ {\cmt (interval $(a,r)$ je teï ten men¹í)}} -\::{\new Pokud $l\ge b$: {\cmt (oba intervaly jsou triviální)}} +\::Vybereme pivota a pøeházíme prvky \dots\ $\rightarrow l,r$. +\::{\new Pokud $r-a > b-l$, prohodíme $(a,r) \leftrightarrow (l,b)$. \\ {\cmt (interval $(a,r)$ je teï ten men¹í)}} +\::{\new Pokud $r>a$:} {\cmt (oba intervaly jsou netriviální)} +\:::{\new Pøidáme $(l,b)$ do~$S$.} {\cmt (vìt¹í na~zásobník)} +\:::{\new $(a,b) \leftarrow (a,r)$.} {\cmt (pokraèujeme men¹ím)} +\::{\new Jinak pokud $b>l$: $(a,b) \leftarrow (l,b)$.} {\cmt (vìt¹í netriviální)} +\::{\new Jinak:} {\cmt (oba triviální)} \:::{\new Pokud $S=\emptyset$, skonèíme.} \:::{\new Jinak odebereme $(a,b)$ z~$S$.} -\::{\new Jinak: {\cmt (vìt¹í je netriviální)}} -\:::{\new Pokud $a(X{\new, K}):$ {\cmt ($K$ je vhodn \:{\new 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)$. -\::{\new Pokud $b-l \le K$: {\cmt (oba intervaly jsou triviální)}} -\:::Pokud $S=\emptyset$, skonèíme. -\:::Jinak odebereme $(a,b)$ z~$S$. -\::Jinak: {\cmt (vìt¹í je netriviální)} -\:::{\new Pokud $r-a > K$, pøidej $(a,r)$ do~$S$ {\cmt (men¹í také)}} -\:::$(a,b) \leftarrow (l,b)$. {\cmt (pokraèujeme vìt¹ím)} +\::Vybereme pivota a pøeházíme prvky \dots\ $\rightarrow l,r$. +\::Pokud $r-a > b-l$, prohodíme $(a,r) \leftrightarrow (l,b)$. +\::{Pokud {\new $r-a > K$}:} {\cmt (oba intervaly jsou netriviální)} +\:::{Pøidáme $(l,b)$ do~$S$.} {\cmt (vìt¹í na~zásobník)} +\:::{$(a,b) \leftarrow (a,r)$.} {\cmt (pokraèujeme men¹ím)} +\::{Jinak pokud {\new $b-l > K$}: $(a,b) \leftarrow (l,b)$.} {\cmt (vìt¹í netriviální)} +\::{Jinak:} {\cmt (oba triviální)} +\:::{Pokud $S=\emptyset$, skonèíme.} +\:::{Jinak odebereme $(a,b)$ z~$S$.} \:{\new Dotøídíme posloupnost InsertSortem.} \\ {\cmt (ka¾dý prvek se posune o~nejvý¹e~$K$, tak¾e je to lineární)} \endalgo