\documentclass{bschlangaul-aufgabe}
\bLadePakete{java}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 2},
  Thematik = {Top-Level-Domains (TLD)},
  Referenz = 66115-2017-F.T1-A2,
  RelativerPfad = Examen/66115/2017/03/Thema-1/Aufgabe-2.tex,
  ZitatSchluessel = examen:66115:2017:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Sortieralgorithmen, Bucketsort, Radixsort, Mergesort, Quicksort},
  EinzelpruefungsNr = 66115,
  Jahr = 2017,
  Monat = 03,
  ThemaNr = 1,
  AufgabeNr = 2,
}

% fett
\let\f=\textbf
% unterstrich
\def\u{\_}
\def\U{\textbf{\_}}

In\index{Sortieralgorithmen} \footcite{examen:66115:2017:03} dieser
Aufgabe sei vereinfachend angenommen, dass sich Top-Level-Domains (TLD)
ausschließlich aus zwei oder drei der 26 Kleinbuchstaben des deutschen
Alphabets ohne Umlaute zusammensetzen. Im Folgenden sollen TLDs
lexikographisch aufsteigend sortiert werden, \dh eine TLD $(s_1, s_2)$
mit zwei Buchstaben (z. B. „co“ für Kolumbien) wird also vor einer TLD
$(t_1, t_2, t_3)$ der Länge drei (z. B. „com“) einsortiert, wenn $s_1 <
t_1 \lor (s_1 = t_1 \land s_2 \leq t_2)$ gilt.

\begin{enumerate}

%%
% a)
%%

\item Sortieren Sie zunächst die Reihung [„de“, „com“, „uk“, „org“,
„co“, „net“, „fr“, „ee“] schrittweise unter Verwendung des
Radix-Sortierverfahrens (Bucketsort). Erstellen Sie dazu eine Tabelle
wie das folgende Muster und tragen Sie dabei in das Feld „Stelle“ die
Position des Buchstabens ein, nach dem im jeweiligen Durchgang sortiert
wird (das Zeichen am TLD-Anfang habe dabei die „Stelle“ 1).
\index{Bucketsort}\index{Radixsort}

\begin{bExkurs}[Alphabet]
abcdefghijklmnopqrstuvwxyz
\end{bExkurs}

\begin{bAntwort}
\begin{tabular}{lllllllll}
Stelle & \multicolumn{7}{l}{Reihung} \\
       & de\u     & com      & uk\u     & org      & co\u     & net     & fr\u     & ee\u     \\
3      & de\U     & uk\U     & co\U     & fr\U     & ee\U     & or\f{g} & co\f{m}  & ne\f{t}  \\
2      & d\f{e}\u & e\f{e}\u & n\f{e}t  & u\f{k}\u & c\f{o}\u & c\f{o}m & f\f{r}\u & o\f{r}g  \\
1      & \f{c}o\u & \f{c}om  & \f{d}e\u & \f{e}e\u & \f{f}r\u & \f{n}et & \f{o}rg  & \f{u}k\u \\
\end{tabular}
\end{bAntwort}

%%
% b)
%%

\item Sortieren Sie nun die gleiche Reihung wieder schrittweise, diesmal
jedoch unter Verwendung des Mergesort-Verfahrens (Sortieren durch
Mischen). Erstellen Sie dazu eine Tabelle wie das folgende Muster und
vermerken Sie in der ersten Spalte jeweils welche Operation durchgeführt
wurde: Wenn Sie die Reihung geteilt haben, schreiben Sie in die linke
Spalte ein T und markieren Sie die Stelle, an der Sie die Reihung
geteilt haben, mit einem senkrechten Strich „|“. Wenn Sie zwei
Teilreihungen durch Mischen zusammengeführt haben, schreiben Sie ein M
in die linke Spalte und unterstreichen Sie die zusammengemischten
Einträge. Beginnen Sie mit dem rekursiven Abstieg immer in der linken
Hälfte einer (Teil-)Reihung.
\index{Mergesort}

% 1 co
% 2 com
% 3 de
% 4 ee
% 5 fr
% 6 net
% 7 org
% 8 uk

\begin{verbatim}
O | Reihung
T | de_   com   uk_   org | co_   net   fr_   ee_
T | de_   com | uk_   org
T | de_ | com
M | com   de_
T |             uk_ | org
M |             org   uk_
M | com   de_   org   uk_
T |                         co_   net | fr_   ee_
T |                         co_ | net
M |                         co_   net
T |                                     fr_ | ee_
T |                                     ee_ | fr_
M |                         co_   ee_   fr_   net
M | co_   com   de_   ee_   fr_   net   org   uk_
\end{verbatim}

%%
% c)
%%

\item Implementieren Sie das Sortierverfahren Quicksort für String-TLDs
in einer gängigen Programmiersprache Ihrer Wahl. Ihr Programm (Ihre
Methode) wird mit drei Parametern gestartet: dem String-Array mit den zu
sortierenden TLDs selbst sowie jeweils der Position des ersten und des
letzten zu sortierenden Eintrags im Array.
\index{Quicksort}

\begin{bAntwort}
\bJavaExamen{66115}{2017}{03}{Quicksort}
\end{bAntwort}

\end{enumerate}
\end{document}
