\documentclass{bschlangaul-aufgabe}
\bLadePakete{mathe,java}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 6},
  Thematik = {Selectionsort},
  Referenz = 66115-2014-H.T2-A6,
  RelativerPfad = Examen/66115/2014/09/Thema-2/Aufgabe-6.tex,
  ZitatSchluessel = aud:ab:3,
  ZitatBeschreibung = {Seite 4, Aufgabe 4},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Selectionsort, Implementierung in Java, Algorithmische Komplexität (O-Notation), Halde (Heap)},
  EinzelpruefungsNr = 66115,
  Jahr = 2014,
  Monat = 09,
  ThemaNr = 2,
  AufgabeNr = 6,
}

Gegeben \index{Selectionsort} \footcite[Seite 4, Aufgabe 4]{aud:ab:3}sei
ein einfacher Sortieralgorithmus, der ein gegebenes Feld $A$ dadurch
sortiert, dass er das \emph{Minimum} $m$ von $A$ \emph{findet}, dann das
Minimum von $A$ ohne das Element $m$ usw.
\footcite[Thema 2 Aufgabe 6 Seite 5]{examen:66115:2014:09}

\begin{enumerate}

%%
% (a)
%%

\item Geben Sie den Algorithmus in Java an.
Implementieren\index{Implementierung in Java} Sie den Algorithmus
\emph{in situ}, \dh so, dass er außer dem Eingabefeld nur konstanten
Extraspeicher benötigt. Es steht eine Testklasse zur Verfügung.

\begin{bAntwort}
\bJavaExamen{66115}{2014}{09}{SortierungDurchAuswaehlen}
\end{bAntwort}

%%
% (b)
%%

\item Analysieren Sie die Laufzeit Ihres Algorithmus.\index{Algorithmische Komplexität (O-Notation)}

\begin{bAntwort}
Beim ersten Durchlauf des \emph{Selectionsort}-Algorithmus muss $n - 1$
mal das Minimum durch Vergleich ermittel werden, beim zweiten Mal
$n - 2$.
Mit Hilfe der \emph{Gaußschen Summenformel} kann die Komplexität
gerechnet werden:

\begin{displaymath}
(n-1)+(n-2)+\dotsb+3+2+1 =
\frac{(n-1)\cdot n}{2} =
\frac{n^2}{2}-\frac{n}{2} \approx
\frac{n^2}{2} \approx
n^2
\end{displaymath}

Da es bei der Berechnung des Komplexität um die Berechnung der
asymptotischen oberen Grenze geht, können Konstanten und die Addition,
Subtraktion, Multiplikation und Division mit Konstanten z. b.
$\frac{n^2}{2}$ vernachlässigt werden.

Der \emph{Selectionsort}-Algorithmus hat deshalb die Komplexität
$\mathcal{O}(n^2)$, er ist von der Ordnung
$\mathcal{O}(n^2)$.
\end{bAntwort}

%%
% (c)
%%

\item Geben Sie eine Datenstruktur an, mit der Sie Ihren Algorithmus
beschleunigen können.\index{Halde (Heap)}

\begin{bAntwort}
Der \emph{Selectionsort}-Algorithmus kann mit einer Min- (in diesem
Fall) bzw. einer Max-Heap beschleunigt werden. Mit Hilfe dieser
Datenstruktur kann sehr schnell das Minimum gefunden werden. So kann auf
die vielen Vergleiche verzichtet werden. Die Komplexität ist dann
$\mathcal{O}(n \log n)$.
\end{bAntwort}
\end{enumerate}

\end{document}
