Skip to content
This repository was archived by the owner on Apr 21, 2018. It is now read-only.

Commit d522f93

Browse files
author
YouniS Bensalah
committed
select, bubblesort so far
1 parent 3fc638b commit d522f93

6 files changed

Lines changed: 397 additions & 0 deletions

File tree

img/BubbleSort.jpg

10.7 KB
Loading

img/InsertionSort.jpg

15.3 KB
Loading

img/InsertionSort.png

26.1 KB
Loading

img/MergeSort.png

68.1 KB
Loading

img/ineffective_sorts.png

87.6 KB
Loading

slides-10.tex

Lines changed: 397 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,397 @@
1+
%% LaTeX-Beamer template for KIT design
2+
%% by Erik Burger, Christian Hammer
3+
%% title picture by Klaus Krogmann
4+
%%
5+
%% version 2.1
6+
%%
7+
%% mostly compatible to KIT corporate design v2.0
8+
%% http://intranet.kit.edu/gestaltungsrichtlinien.php
9+
%%
10+
%% Problems, bugs and comments to
11+
12+
13+
\documentclass[18pt]{beamer}
14+
15+
%% SLIDE FORMAT
16+
17+
% use 'beamerthemekit' for standard 4:3 ratio
18+
% for widescreen slides (16:9), use 'beamerthemekitwide'
19+
20+
\usepackage{templates/beamerthemekit}
21+
% \usepackage{templates/beamerthemekitwide}
22+
23+
\usepackage[utf8]{inputenc}
24+
\usepackage{hyperref}
25+
\usepackage{listings}
26+
\usepackage{color}
27+
\usepackage{xcolor}
28+
\usepackage{colortbl}
29+
\usepackage{array}
30+
%\usepackage{tikz}
31+
%\usetikzlibrary{calc,shapes.multipart,chains,arrows}
32+
\usepackage{amsmath}
33+
\usepackage{amssymb}
34+
\usepackage{mathrsfs}
35+
36+
\definecolor{lime}{HTML}{8FFF53}
37+
\definecolor{darkgrey}{HTML}{5A5A5A}
38+
\definecolor{awesome}{HTML}{FF2252}
39+
\definecolor{lightgreen}{HTML}{E0FF98}
40+
41+
\newcommand{\quotes}[1]{``#1''}
42+
43+
%% TITLE PICTURE
44+
45+
% if a custom picture is to be used on the title page, copy it into the 'logos'
46+
% directory, in the line below, replace 'mypicture' with the
47+
% filename (without extension) and uncomment the following line
48+
% (picture proportions: 63 : 20 for standard, 169 : 40 for wide
49+
% *.eps format if you use latex+dvips+ps2pdf,
50+
% *.jpg/*.png/*.pdf if you use pdflatex)
51+
52+
\titleimage{greendrop}
53+
54+
%% TITLE LOGO
55+
56+
% for a custom logo on the front page, copy your file into the 'logos'
57+
% directory, insert the filename in the line below and uncomment it
58+
59+
%\titlelogo{mylogo}
60+
61+
% (*.eps format if you use latex+dvips+ps2pdf,
62+
% *.jpg/*.png/*.pdf if you use pdflatex)
63+
64+
%% TikZ INTEGRATION
65+
66+
% use these packages for PCM symbols and UML classes
67+
% \usepackage{templates/tikzkit}
68+
% \usepackage{templates/tikzuml}
69+
70+
% the presentation starts here
71+
72+
\title[Suchen, Sortieren, Parsen]{Programmieren:\\ Suchen, Sortieren, Parsen}
73+
\subtitle{Tutorium 30}
74+
\author{YouniS Bensalah}
75+
\date{January 22, 2016}
76+
77+
\institute{Chair for Software Design and Quality}
78+
79+
% Bibliography
80+
81+
\usepackage[citestyle=authoryear,bibstyle=numeric,hyperref,backend=biber]{biblatex}
82+
\addbibresource{templates/example.bib}
83+
\bibhang1em
84+
85+
\begin{document}
86+
87+
% change the following line to "ngerman" for German style date and logos
88+
\selectlanguage{english}
89+
90+
%title page
91+
\begin{frame}
92+
\titlepage
93+
\end{frame}
94+
95+
%table of contents
96+
\begin{frame}{Heute}
97+
\tableofcontents
98+
\end{frame}
99+
100+
\section{Organisatorisches}
101+
102+
\begin{frame}{Organisatorisches}
103+
\begin{itemize}
104+
\item Bewertung Programmieren
105+
\begin{itemize}
106+
\item Der Übungsschein muss bestanden werden, um zu den Abschlussaufgaben zugelassen zu werden.
107+
\item Der Übungsschein geht jedoch \textbf{nicht} in die Note mit ein.
108+
\item Die Note wird einzig durch das Abschneiden in den Abschlussaufgaben gebildet.
109+
\end{itemize}
110+
\vspace{.3in}
111+
\item Anmeldung Übungsschein und Abschlussaufgabe
112+
\begin{itemize}
113+
\item Es kann sein, dass es damit zurzeit Probleme gibt.
114+
\item \textit{Keep calm and retry later.}
115+
\end{itemize}
116+
\end{itemize}
117+
\end{frame}
118+
119+
\section{Suchen}
120+
121+
\begin{frame}{Suchen}
122+
\center
123+
\Huge{Suchen}
124+
\end{frame}
125+
126+
\begin{frame}{Suchen}
127+
\begin{block}{}
128+
\textbf{Problem:}\\
129+
\textit{\quotes{Wie finde ich ein bestimmtes Element in einer Liste ?}}
130+
\end{block}
131+
\vspace{.2in}
132+
\begin{center}
133+
\begin{tabular}{|c|c|c|c|c|c|c|c|}
134+
\hline
135+
4 & 2 & 3 & 9 & 7 & 13 & 6 & 10 \\
136+
\hline
137+
\end{tabular}
138+
\end{center}
139+
\end{frame}
140+
141+
\subsection{Lineare Suche}
142+
143+
\begin{frame}{Lineare Suche}
144+
\begin{itemize}
145+
\item Erster (naiver) Ansatz: \textbf{Lineare Suche}
146+
\item Idee: Ein Element nach dem anderen anschauen und vergleichen.
147+
\end{itemize}
148+
\end{frame}
149+
150+
\begin{frame}[fragile]{Lineare Suche: Java-Code}
151+
\begin{exampleblock}{}
152+
\begin{lstlisting}[language=Java,basicstyle=\scriptsize]
153+
int linearSearch(int needle, int[] haystack) {
154+
for (int i = 0; i < haystack.length; i++) {
155+
if (haystack[i] == needle) {
156+
return i;
157+
}
158+
}
159+
return -1;
160+
}
161+
\end{lstlisting}
162+
163+
\end{exampleblock}
164+
165+
\end{frame}
166+
167+
\begin{frame}{Lineare Suche}
168+
\begin{itemize}
169+
\item Laufzeit: $\mathcal{O}(n)$
170+
\item Für beliebige Listen geht es nicht wirklich besser.
171+
\end{itemize}
172+
\end{frame}
173+
174+
\subsection{Binäre Suche}
175+
176+
\begin{frame}{Rätsel}
177+
\small
178+
Es wurde ein neuer Info-Bau an der Uni errichtet. Das neue Gebäude besitzt ganze 256 Stockwerke.
179+
Die Informatiker sind zunächst begeistert, doch schon bald gibt es ein Problem:\\
180+
Da bekanntlich alle Informatiker Keller gewohnt sind, können sie die Gefahr von offenen Fenstern nicht einschätzen und fallen gelegentlich hinaus.\\
181+
Daraufhin sollten zunächst alle Fenster des Gebäudes verriegeln werden, doch man hat festgestellt, dass einige Informatiker den Sturz munter überstanden haben.\\
182+
Nun geht man davon aus, dass es ein Stockwerk $n$ gibt, ab dem die Fenster keine Gefahr mehr darstellen. Zu diesem Zweck sollen nun Tests durchgeführt werden,
183+
bei denen man jeweils einen Informatiker aus dem Fenster springen lässt und beobachtet, ob der Sturz munter überstanden wurde.
184+
Da die Informatiker aber lieber die Anzahl der Tests als die Anzahl der unglücklichen Landungen minimieren wollen, kommt eine lineare Suche (Stockwert 1, Stockwerk 2, \dots) nicht in Frage.\\
185+
\vspace{.2in}
186+
Wieviele \quotes{Testfälle} braucht man im ungünstigsten Fall ?
187+
\end{frame}
188+
189+
\begin{frame}{Lösung}
190+
\begin{block}{}
191+
$log_2(256) = log_2(2^8) = 8$
192+
\end{block}
193+
\pause
194+
\vspace{.4in}
195+
\textit{\dots Aber warum ?}
196+
\end{frame}
197+
198+
199+
\begin{frame}{Binäre Suche}
200+
\begin{itemize}
201+
\item Ansatz: Suche auf einer vorsortierten Liste.
202+
\item Idee: Teile die Liste in zwei Hälften und entscheide, in welcher der beiden Teillisten das gesuchte Element liegt und verwerfe die andere.\\
203+
Dann wiederhole den Vorgang auf der übrigen Liste.
204+
\end{itemize}
205+
\end{frame}
206+
207+
\begin{frame}[fragile]{Binäre Suche: Java-Code}
208+
\begin{exampleblock}{}
209+
\begin{lstlisting}[language=Java,basicstyle=\scriptsize]
210+
int binarySearch(int needle, int[] haystack, int from, int to) {
211+
if (to > from) {
212+
int mid = (from + to) / 2;
213+
if (needle < haystack[mid]) {
214+
return search(needle, haystack, from, mid - 1);
215+
} else if (needle > haystack[mid]) {
216+
return search(needle, haystack, mid + 1, to);
217+
} else {
218+
return mid;
219+
}
220+
}
221+
return -1;
222+
}
223+
\end{lstlisting}
224+
\end{exampleblock}
225+
\end{frame}
226+
227+
\begin{frame}{Binäre Suche: Beispiel}
228+
Suche: \textbf{\alert{8}}
229+
\begin{center}
230+
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
231+
\hline
232+
\cellcolor{lightgreen}{3} & \cellcolor{lightgreen}{4} & \cellcolor{lightgreen}{4} & \cellcolor{lightgreen}{5} & \cellcolor{lightgreen}{6} & \cellcolor{lightgreen}{7} & \cellcolor{lightgreen}{8} & \cellcolor{lightgreen}{10} & \cellcolor{lightgreen}{11} & \cellcolor{lightgreen}{14} & \cellcolor{lightgreen}{17} & \cellcolor{lightgreen}{22} & \cellcolor{lightgreen}{24} & \cellcolor{lightgreen}{29} & \cellcolor{lightgreen}{32} & \cellcolor{lightgreen}{42} \\
233+
\hline
234+
\end{tabular}
235+
\pause
236+
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
237+
\hline
238+
\cellcolor{lightgreen}{3} & \cellcolor{lightgreen}{4} & \cellcolor{lightgreen}{4} & \cellcolor{lightgreen}{5} & \cellcolor{lightgreen}{6} & \cellcolor{lightgreen}{7} & \cellcolor{lightgreen}{8} & \cellcolor{lightgreen}{10} & \cellcolor{lime}{11} & \cellcolor{darkgrey}{14} & \cellcolor{darkgrey}{17} & \cellcolor{darkgrey}{22} & \cellcolor{darkgrey}{24} & \cellcolor{darkgrey}{29} & \cellcolor{darkgrey}{32} & \cellcolor{darkgrey}{42} \\
239+
\hline
240+
\end{tabular}
241+
\pause
242+
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
243+
\hline
244+
\cellcolor{darkgrey}{3} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{4} & \cellcolor{lime}{5} & \cellcolor{lightgreen}{6} & \cellcolor{lightgreen}{7} & \cellcolor{lightgreen}{8} & \cellcolor{lightgreen}{10} & \cellcolor{darkgrey}{11} & \cellcolor{darkgrey}{14} & \cellcolor{darkgrey}{17} & \cellcolor{darkgrey}{22} & \cellcolor{darkgrey}{24} & \cellcolor{darkgrey}{29} & \cellcolor{darkgrey}{32} & \cellcolor{darkgrey}{42} \\
245+
\hline
246+
\end{tabular}
247+
\pause
248+
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
249+
\hline
250+
\cellcolor{darkgrey}{3} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{5} & \cellcolor{darkgrey}{6} & \cellcolor{lime}{7} & \cellcolor{lightgreen}{8} & \cellcolor{lightgreen}{10} & \cellcolor{darkgrey}{11} & \cellcolor{darkgrey}{14} & \cellcolor{darkgrey}{17} & \cellcolor{darkgrey}{22} & \cellcolor{darkgrey}{24} & \cellcolor{darkgrey}{29} & \cellcolor{darkgrey}{32} & \cellcolor{darkgrey}{42} \\
251+
\hline
252+
\end{tabular}
253+
\pause
254+
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
255+
\hline
256+
\cellcolor{darkgrey}{3} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{5} & \cellcolor{darkgrey}{6} & \cellcolor{darkgrey}{7} & \cellcolor{lime}{8} & \cellcolor{lightgreen}{10} & \cellcolor{darkgrey}{11} & \cellcolor{darkgrey}{14} & \cellcolor{darkgrey}{17} & \cellcolor{darkgrey}{22} & \cellcolor{darkgrey}{24} & \cellcolor{darkgrey}{29} & \cellcolor{darkgrey}{32} & \cellcolor{darkgrey}{42} \\
257+
\hline
258+
\end{tabular}
259+
\pause
260+
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
261+
\hline
262+
\cellcolor{darkgrey}{3} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{4} & \cellcolor{darkgrey}{5} & \cellcolor{darkgrey}{6} & \cellcolor{darkgrey}{7} & \cellcolor{awesome}{8} & \cellcolor{darkgrey}{10} & \cellcolor{darkgrey}{11} & \cellcolor{darkgrey}{14} & \cellcolor{darkgrey}{17} & \cellcolor{darkgrey}{22} & \cellcolor{darkgrey}{24} & \cellcolor{darkgrey}{29} & \cellcolor{darkgrey}{32} & \cellcolor{darkgrey}{42} \\
263+
\hline
264+
\end{tabular}
265+
\end{center}
266+
\end{frame}
267+
268+
269+
\begin{frame}{Binäre Suche}
270+
\begin{itemize}
271+
\item Laufzeit: $\mathcal{O}(log(n))$
272+
\item Die Liste muss \textbf{sortiert} sein.
273+
\end{itemize}
274+
\end{frame}
275+
276+
\section{Sortieren}
277+
278+
\begin{frame}{Sortieren}
279+
\center
280+
\Huge{Sortieren}
281+
\end{frame}
282+
283+
\begin{frame}{Sortieren}
284+
\begin{block}{}
285+
\textbf{Problem:}\\
286+
\textit{\quotes{Wie sortiere ich eine gegebene Liste ?}}
287+
\end{block}
288+
\vspace{.2in}
289+
\begin{center}
290+
\begin{tabular}{|c|c|c|c|c|c|c|c|}
291+
\hline
292+
4 & 2 & 3 & 9 & 7 & 13 & 6 & 10 \\
293+
\hline
294+
\end{tabular}
295+
\end{center}
296+
\end{frame}
297+
298+
\subsection{Bubble Sort}
299+
300+
\begin{frame}{Bubble Sort}
301+
\begin{itemize}
302+
\item Ansatz: Vertausche zwei unsortierte benachbarte Elemente, solange bis die Liste sortiert ist.
303+
\end{itemize}
304+
\vspace{.2in}
305+
\begin{figure}
306+
\includegraphics[scale=.5]{img/BubbleSort.jpg}
307+
\end{figure}
308+
\end{frame}
309+
310+
\begin{frame}[fragile]{Bubble Sort: Java-Code}
311+
\begin{exampleblock}{}
312+
\begin{lstlisting}[language=Java,basicstyle=\scriptsize]
313+
void bubbleSort(int[] list) {
314+
int swap;
315+
for (int i = 1; i < list.length; i++) {
316+
for (int j = i; j > 0; j--) {
317+
if (list[j] < list[j - 1]) {
318+
swap = list[j];
319+
list[j] = list[j - 1];
320+
list[j - 1] = swap;
321+
}
322+
}
323+
}
324+
}
325+
\end{lstlisting}
326+
\end{exampleblock}
327+
\end{frame}
328+
329+
\subsection{Selection Sort}
330+
331+
\begin{frame}{Selection Sort}
332+
body
333+
\end{frame}
334+
335+
\subsection{Insertion Sort}
336+
337+
\begin{frame}{Insertion Sort}
338+
body
339+
\end{frame}
340+
341+
\subsection{Merge Sort}
342+
343+
\begin{frame}{Merge Sort}
344+
body
345+
\end{frame}
346+
347+
\section{Parsen}
348+
349+
\begin{frame}{Parsen}
350+
\center
351+
\Huge{Parsen}
352+
\end{frame}
353+
354+
\begin{frame}{Parsen}
355+
body
356+
\end{frame}
357+
358+
\subsection{Formale Grammatiken}
359+
360+
\begin{frame}{Formale Grammatiken}
361+
body
362+
\end{frame}
363+
364+
\subsection{Top-down Parsing}
365+
366+
\begin{frame}{Top-down Parsing}
367+
body
368+
\end{frame}
369+
370+
\subsubsection{LL(1)-Parser}
371+
372+
\begin{frame}{LL(1)-Parser}
373+
body
374+
\end{frame}
375+
376+
\appendix
377+
\beginbackup
378+
379+
\begin{frame}{Fragen ?}
380+
\begin{figure}
381+
\includegraphics[scale=.5]{img/formulas.png}
382+
\end{figure}
383+
\end{frame}
384+
385+
\begin{frame}{Stack Sort}
386+
\url{https://gkoberger.github.io/stacksort}
387+
\end{frame}
388+
389+
\begin{frame}{Bis nächste Woche !}
390+
\begin{figure}
391+
\includegraphics[scale=.3]{img/ineffective_sorts.png}
392+
\end{figure}
393+
\end{frame}
394+
395+
\backupend
396+
397+
\end{document}

0 commit comments

Comments
 (0)