\documentclass{bschlangaul-aufgabe} \bLadePakete{java,grafik} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 7}, Thematik = {Sortieren duch Einfügen}, Referenz = 46115-2017-H.T2-A7, RelativerPfad = Examen/46115/2017/09/Thema-2/Aufgabe-7.tex, ZitatSchluessel = examen:46115:2017:09, ZitatBeschreibung = {Thema 2 Aufgabe 7}, BearbeitungsStand = unbekannt, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Insertionsort, Schreibtischlauf (Sortierung), Implementierung in Java}, EinzelpruefungsNr = 46115, Jahr = 2017, Monat = 09, ThemaNr = 2, AufgabeNr = 7, } \def\TmpSchreibtischLauf#1#2#3#4#5#6#7{ \noindent \begin{tikzpicture} \node (qs) [unsorted] { \nodepart{one} #1 \nodepart{two} #2 \nodepart{three} #3 \nodepart{four} #4 \nodepart{five} #5 \nodepart{six} #6 }; \node[sorted, fit=(qs.north west) (qs.south west) (qs.#7 split)] {}; \end{tikzpicture} } \section{Aufgabe 7 \index{Insertionsort} \footcite[Thema 2 Aufgabe 7]{examen:46115:2017:09} } \begin{enumerate} \item Führen Sie \emph{„Sortieren durch Einfügen“} lexikographisch aufsteigend und \emph{in-situ} (\emph{in-place}) so in einem Schreibtischlauf auf folgendem Feld (Array) aus, dass gleiche Elemente ihre relative Abfolge jederzeit beibehalten (also dass \zB $A_1$ stets vor $A_2$ im Feld steht). Jede Zeile stellt den Zustand des Feldes dar, nachdem das jeweils nächste Element in die Endposition verschoben wurde. Der bereits sortierte Teilbereich steht vor |||. Gleiche Elemente tragen zwecks Unterscheidung ihre \emph{„Objektidentität“} als Index (\zB \bJavaCode{"A1".equals("A2")} aber \bJavaCode{"A1" != "A2"}) \footcite[Seite 1, Aufgabe 1]{aud:pu:2} \index{Schreibtischlauf (Sortierung)} \usetikzlibrary{chains,fit,shapes,shapes.multipart} \tikzset{ sorted/.style = { draw, line width=0.6pt, inner sep=0mm }, unsorted/.style = { draw, font=\tiny, rectangle split, rectangle split horizontal, rectangle split parts=6, text centered, align=center }, } \begin{center} \TmpSchreibtischLauf{$L$}{$A_1$}{$B_1$}{$F$}{$A_2$}{$B_2$}{one} \end{center} \begin{bAntwort} \begin{center} \TmpSchreibtischLauf{$L$}{$A_1$}{$B_1$}{$F$}{$A_2$}{$B_2$}{one} \TmpSchreibtischLauf{$A_1$}{$L$}{$B_1$}{$F$}{$A_2$}{$B_2$}{two} \TmpSchreibtischLauf{$A_1$}{$B_1$}{$L$}{$F$}{$A_2$}{$B_2$}{three} \TmpSchreibtischLauf{$A_1$}{$B_1$}{$F$}{$L$}{$A_2$}{$B_2$}{four} \TmpSchreibtischLauf{$A_1$}{$A_2$}{$B_1$}{$F$}{$L$}{$B_2$}{five} \begin{tikzpicture} \node (qs) [unsorted] { \nodepart{one} $A_1$ \nodepart{two} $A_2$ \nodepart{three} $B_1$ \nodepart{four} $B_2$ \nodepart{five} $F$ \nodepart{six} $L$ }; \node[sorted, fit=(qs.north west) (qs.south west) (qs.south east)] {}; \end{tikzpicture} \end{center} \end{bAntwort} \item Ergänzen Sie die folgende Methode\index{Implementierung in Java} so, dass sie die Zeichenketten im Feld \bJavaCode{a} lexikographisch aufsteigend durch Einfügen sortiert. Sie muss zum vorangehenden Ablauf passen, \dh sie muss \emph{iterativ} sowie \emph{in-situ} (\emph{in-place}) arbeiten und die relative Reihenfolge gleicher Elemente jederzeit beibehalten. Sie dürfen davon ausgehen, dass kein Eintrag im Feld null ist. \index{Implementierung in Java} \begin{minted}{java} void sortierenDurchEinfuegen(String[] a) { // Hilfsvariable: String tmp; } \end{minted} \begin{bAntwort} \bJavaExamen[firstline=5,lastline=16]{46115}{2017}{09}{InsertionSort} \end{bAntwort} \end{enumerate} \end{document}