]> mj.ucw.cz Git - ads1.git/commitdiff
Opraveny slidy ke QS.
authorMartin Mares <mj@ucw.cz>
Mon, 19 Mar 2007 22:01:08 +0000 (23:01 +0100)
committerMartin Mares <mj@ucw.cz>
Mon, 19 Mar 2007 22:01:08 +0000 (23:01 +0100)
slides/quicksort.tex

index 7ff63cafc359c1c36fab248709f2cfb2029b9b7d..735a8cb9a6c68f4140f7967202257677a9cafa88 100644 (file)
@@ -77,15 +77,15 @@ $\<Sort>(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<r$, pøidáme $(a,r)$ do~$S$ {\cmt (men¹í také)}}
-\:::{\new $(a,b) \leftarrow (l,b)$. {\cmt (pokraèujeme vìt¹ím)}}
 \endalgo
 
 {\sit Nyní staèí $\O(\log n)$ pamìti pro zásobník.}
@@ -101,15 +101,15 @@ $\<Sort>(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