# AlgoDat: Tutorium 1
## Aufgabe 1
#### a) **[1|2|3|4]**
InsertionSort
- Index: 1 2 3 4
$j=2$: **[1|2|3|4]**
$i=1: i=1 > 0$ und $A[1]=1 < key = 2$
*Vergleich: 1 und 2*
- Index: 1 2 3 4
$j=3:$ **[1|2|3|4]**
$i=2: i=2 > 0$ und $A[2]=2 < key = 3$
*Vergleich: 3 und 4*
- Index: 1 2 3 4
$j=4:$ **[1|2|3|4]**
$i=3: i=3 > 0$ und $A[3] < key = 4$
*Vergleich: 5 und 6*
$\Rightarrow$ Auf diesem Array werden
3 Vergleiche beim InsertionSort Algorithmus durchgeführt.
MergeSort:
Index: 1 2 3 4
Array: **[1|2|3|4]**
$l=1<r=4$
$m = 2$
| TeilArray: 1 2 | | TeilArray: 3 4 | |
| -------------- | --- | -------------- | --- |
| l=1<r=2 | | l=3<r=4 | |
| *Vergleich 1* | | *Vergleich 2* | |
| m=1 | | m=1 | |
|**TeilArray: 1**|**TeilArray: 2**|**TeilArray: 3**|**TeilArray: 4**|
| l=1=r |l=2=r |l=3=r |l=4=r |
| Merge(A=[1,2],l=1,m=1,r=2) | Merge(A=[3,4],l=3,m=3,r=4 |
| -------------------------- | ------------------------- |
| L[1]=1<R[1]=2 | L[1]=3<R[1]=4 |
| *Vergleich 3* | *Vergleich 4* |
| Merge(A=[1,2,3,4],l=1,m=2,r=4) |
| ------------------------------ |
| L[1]=1<R[1]=3 |
| *Vergleich 5* |
| L[2]=2<R[1]=3 |
| *Vergleich 6* |
$\Rightarrow$ Auf diesem Array werden 6 Vergleiche beim MergeSort Algorithmus durchgeführt.
#### b) *analog*
InsertionSort: 6 Vergleiche
MergeSort: 6 Vergleiche
## Aufgabe 2: Add per Schleife
Schleifeninvariante: $s=a+i-1$
#### 1.) Initialisierung
Zeige: Invariante ist beim 1.Schleifendurchlauf erfüllt.
Hier: klar, denn für $i=1$ gilt:
$s=a+i-1=a+1-1=a$
#### 2.) Aufrechterhaltung
Zeige: Wenn die Invariante vor dem $i.$ Schleifendurchlauf erfüllt ist,
dann auch vor dem $i+1.$
Hier: Vor dem $i.$ Durchlauf gilt INV,
d.h. $s=a+i-1$.
Dann wird $s$ mit $1$ addiert $\Rightarrow s=a+i$
Dann wird $i$ um $1$ erhöht $\Rightarrow s=a+i-1 \Leftarrow$ INV
#### 3.) Terminierung
Zeige:
Zusammengenommen ergeben Invariante und verletzte Schleifenbediengung die Korrektheit.
Hier: Verletzte Schleifenbedingung: $i>b$, also $i=b+1$.
Einsetzen von "$i=b+1$" in INV liefert $s=a+b$.
$\Rightarrow$ Der Algorithmus terminiert und liefert das korrekte Ergebnis.
###### tags: `Algorithmen und Datenstrukturen` `Uni` `Informatik`