Beruflich Dokumente
Kultur Dokumente
Quelle: Wikipedia
Quelle: Wikipedia
Quelle: Wikipedia
Quelle: Wikipedia
Quelle: Wikipedia
- “CS ≠ science”
- “CS = engineering”
- Concerned with “making”: Physical computers, S/W systems
Quelle: Wikipedia
• Informatik =
- discovery (science)
- implementation (engineering)
of information processes
• Eierfall-Problem:
Gegeben: Hochhaus mit 100
Stockwerken und
zwei Eier
Gesucht: Das höchste Stockwerk
aus dem man ein Ei
fallen lassen kann, so
dass es nicht zerbricht
• Wie???
• Eierfall-Problem:
Gegeben: Hochhaus mit 100
Stockwerken und
zwei Eier
Gesucht: Das höchste Stockwerk
aus dem man ein Ei
fallen lassen kann, so
dass es nicht zerbricht
• Wie???
Øhttp://datagenetics.com/blog/july22012/
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 9
Denkanstoß
• Frage aus „technischen Bewerbungsgesprächen“ für Software-
Engineering-Positionen
• Siehe auch:
• In dieser Vorlesung
- Basis-Datenstrukturen
- Basis-Algorithmen
• Kommunikation
• Graphik
• Robotik
• Künstliche Intelligenz
• …
• Wichtige Aspekte:
- Korrektheit: Erfüllt der Algorithmus seine Anforderungen?
- Effizienz: Wie viel Zeit und wie viel Speicherplatz braucht er?
- Terminierung: Hält der Algorithmus immer an?
Pseudocode
• Schleifen (for, while, repeat)
Pseudocode
• Zuweisungen durch ¬
Pseudocode
• Variablen (z.B. i, j, key) sind lokal definiert
Pseudocode
• Keine Typdeklaration, wenn Typ aus dem Kontext klar
Pseudocode
• Auch komplexere Datenstrukturen möglich, z.B. Array
Pseudocode
• Zugriff auf Feldelemente eines Arrays mit [ ]: z.B: A[1], A[i], A[i + 1], …
• Indizierung beginnt mit 1!
Pseudocode
• Datenstrukturen/Objekte können weitere Eigenschaften haben,
z.B: Arrays haben Längen
• Zugriff über Funktionen, z.B. Funktion length(A) gibt Länge des Arrays A zurück
Pseudocode
• Blockstruktur durch Einrücken, d.h. Klammern nicht unbedingt
benötigt!
Pseudocode
• Bedingte Verzweigungen (if then else)
Pseudocode
• Bedingte Verzweigungen (if then else)
• if summe > 9000 then
print “over ninethousand“
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 33
Pseudocode
AlgorithmFoo(Array A)
1. for j ¬ 2 to length(A) do
2. key ¬ A[j]
3. i ¬ j-1 Beschreibung des
Algorithmus in
4. while i>0 and A[i]>key do Pseudocode
5. A[i+1] ¬ A[i] (kein C, Java, etc.)
6. i ¬ i-1
7. A[i+1] ¬ key
Pseudocode
• Funktionen „call-by-value“: jede aufgerufene Funktion erhält neue Kopie der
übergebenen Variable, d.h. lokale Änderungen sind nicht global sichtbar
• Bei Objekten wird der Zeiger kopiert, lokale Änderungen am Objekt global
sichtbar
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 34
Pseudocode
AlgorithmFoo(Array A)
1. for j ¬ 2 to length(A) do
2. key ¬ A[j]
Beschreibung des
3. i ¬ j-1 Algorithmus in
4. while i>0 and A[i]>key do Pseudocode
(kein C, Java, etc.)
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
Pseudocode
• Rückgabe von Werten durch return
Pseudocode
• Kommentare durch Ø, oder //
Beispiel:
• Eingabe: 15, 7, 3, 18, 8, 4
• Ausgabe: 3, 4, 7, 8, 15, 18
8 15 3 14 7 6 18 19
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 43
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 44
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 45
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 46
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 47
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 48
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 49
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key
8 15 3 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 50
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 15 3 14 7 6 18 19
1 i j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 51
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 15 3 14 7 6 18 19
1 i j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 52
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 15 15 14 7 6 18 19
1 i j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 53
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 15 15 14 7 6 18 19
i j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 54
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 15 15 14 7 6 18 19
i j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 55
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 8 15 14 7 6 18 19
i j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 56
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 8 15 14 7 6 18 19
i 1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 57
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
8 8 15 14 7 6 18 19
i 1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 58
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
key=3
3 8 15 14 7 6 18 19
i 1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 59
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
Sortiert
3 8 15 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 60
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
Sortiert key
3 8 15 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 61
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do
5. A[i+1] ¬ A[i]
6. i ¬ i-1
7. A[i+1] ¬ key
Sortiert key=14
3 8 15 14 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 62
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key
Sortiert key=14
3 8 15 14 7 6 18 19
1 j-1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 63
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key
Sortiert key=14
3 8 15 14 7 6 18 19
1 j-1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 64
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key
key=14
3 8 15 15 7 6 18 19
1 i j-1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 65
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key
key=14
3 8 15 15 7 6 18 19
1 i j-1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 66
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=14
3 8 14 15 7 6 18 19
1 i j-1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 67
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert
3 8 14 15 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 68
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert key=7
3 8 14 15 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 69
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert key=7
3 8 14 15 7 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 70
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=7
3 8 8 14 15 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 71
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=7
3 8 8 14 15 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 72
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=7
3 7 8 14 15 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 73
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert
3 7 8 14 15 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 74
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert key=6
3 7 8 14 15 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 75
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert key=6
3 7 8 14 15 6 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 76
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=6
3 7 7 8 14 15 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 77
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=6
3 7 7 8 14 15 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 78
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
key=6
3 6 7 8 14 15 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 79
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert
3 6 7 8 14 15 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 80
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
3 6 7 8 14 15 18 19
1 j n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 81
Insertion Sort
InsertionSort(Array A) Ø Eingabegröße n
1. for j ¬ 2 to length(A) do Ø length(A) = n
2. key ¬ A[j]
3. i ¬ j-1
4. while i>0 and A[i]>key do Ø verschiebe alle Elemente aus
5. A[i+1] ¬ A[i] Ø A[1…j-1], die größer als key
6. i ¬ i-1 Ø sind eine Stelle nach rechts
7. A[i+1] ¬ key Ø Speichere key in Lücke
Sortiert
3 6 7 8 14 15 18 19
1 n
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 82
Insertion Sort visualisiert
https://www.youtube.com/watch?v=ROalU379l3U
Kernfragen
Wie kann man die Laufzeit eines Algorithmus bestimmen?
Sortiert der Algorithmus alle möglichen Eingaben auch wirklich korrekt?
Algorithmen, Pseudocode, Sortieren | Manfred Hauswirth | Einführung in die Programmierung, WS 21/22
Seite 84
Ausblick: Sortieralgorithmen im Vergleich
https://www.youtube.com/watch?v=ZZuD6iUe3Pc