Skip to content
Snippets Groups Projects
Commit b4fdbb0e authored by Florian Unger's avatar Florian Unger
Browse files

fixed radixsort and added a bit more explanation of th syntax

parent 1a9ce9c8
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,8 @@ Der Sortieralgorithmus \texttt{radixsort} ist ein Beispiel für ein nicht vergle
arbeiten ohne Vergleiche und müssen daher zusätzliche Annahmen über den Input machen. Wir fordern also, dass unser aus
$n$ Elementen bestehender Input jeweils eine gleiche Anzahl von Stellen $d \in \mathbb{N}$ hat. Pro Stelle haben wir
dabei $b$ verschiedene Möglichkeiten. Beispielsweise besteht \texttt{``beispiel''} aus $d=8$ Buchstaben, von denen es
$b=26$ gibt. Die Dezimalzahl $9215$ hat hingegen $d=4$ Stellen mit jeweils $b=10$ Möglichkeiten.
$b=26$ gibt. Die Dezimalzahl $9215$ hat hingegen $d=4$ Stellen mit jeweils $b=10$ Möglichkeiten. Wir referenzerieren
auf die $i.$ Stelle von $x$ mit $x_i$. Beispielsweise ist mit $x=423$: $x_0=4$, $x_2=3$.
Hat man Zahlen/Wörte von unterschiedlicher Länge, muss man sie von der passenden Seite mit Lückenfüllern auffüllen, im
Fall von Zahlen also von links mit $0$.
......@@ -18,13 +19,13 @@ Reihenfolge). In der Sammelphase werden alle Kategorien entsprechend ihrer Ordnu
\begin{algorithm}[H]
\SetNlSty{texttt}{[}{]}
\caption{$\texttt{radixsort}(\mathcal{Q})$}
\KwIn{An unsorted Queue $\mathcal{Q}$ of lenght $n$}
\KwIn{An unsorted Queue $\mathcal{Q}$ of length $n$}
\KwOut{$\mathcal{Q}$, but sorted}
$\text{Initialize Queues } \mathcal{Q}_0, \dots, \mathcal{Q}_{b-1}$ \;
\For{$i \leftarrow d-1$ \KwTo $0$}{
\While{$\mathcal{Q}$ \emph{is not empty}}{
$x \leftarrow \texttt{get}(\mathcal{Q})$ \;
$\texttt{put}(\mathcal{Q}_{x_i}, x_i)$ \;
$\texttt{put}(\mathcal{Q}_{x_i}, x)$ \;
}
\For{ $j \rightarrow 0$ \KwTo $b-1$}{
\While{$\mathcal{Q}_j$ \emph{is not empty}}{
......@@ -41,7 +42,7 @@ letzten $i$ Stellen, sortiert sind.
Eine wichtige Bedingung für die Korrektheit der Sammelphase ist, dass die vorige Reihenfolge innerhalb der Fächer
aufrechterhalten wird.
Die Laufzeit von \texttt{radixsort} betragt $T_{\text{rs}}(n) = \mathcal{O}(d \cdot n)$, ist also linear, wenn die
Die Laufzeit von \texttt{radixsort} beträgt $T_{\text{rs}}(n) = \mathcal{O}(d \cdot n)$, ist also linear, wenn die
Anzahl der Stellen $d$ als konstant betrachtet wird.
In diesem Fall ist \texttt{radixsort} asymptotisch schneller als vergleichsbasierte Sortierverfahren, hat aber einen
erhöhten Speicherbedarf (TODO: Stimmt das wirklich? Implementierung mit Queues scheint ziemlich sparsam).
deutlich erhöhten Speicherbedarf, welcher insbesondere linear in der Anzahl der Fächer $b$ wächst.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment