Sortieren. Ziel: Bringe Folge von Objekten in eine bestimmte Reihenfolge. Beispiel

Größe: px
Ab Seite anzeigen:

Download "Sortieren. Ziel: Bringe Folge von Objekten in eine bestimmte Reihenfolge. Beispiel"

Transkript

1 Sortieren Ziel: Bringe Folge von Objekten in eine bestimmte Reihenfolge Beispiel ( Müller, Darmstadt, 456) ( Meier, Wiesbaden,123 ) ( Schmitt, Frankfurt, 789) ( Adam, Hamburg, 999) Aufsteigend nach Namen sortiert: ( Adam, Hamburg, 999) ( Meier, Wiesbaden, 456) ( Müller, Darmstadt, 123) ( Schmitt, Frankfurt, 789) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 1

2 Sortieren, Beispiel (2) Aufsteigend nach Kundennummer sortiert: ( Müller, Darmstadt, 123) ( Meier, Wiesbaden, 456) ( Schmitt, Frankfurt, 789) ( Adam, Hamburg, 999) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 2

3 Sortieren Eingabe: Liste von Objekten Vergleichsoperator auf den Objekten Ausgabe: Liste der Objekte mit i.a. anderer Reihenfolge [a 1,... a n ] so dass i j a i a j Annahme: Ordnung ist transitiv, reflexiv, total, aber nicht notwendig antisymmetrisch total : es gilt a b oder b a. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 3

4 Sortiermethoden Annahme im Folgenden: Liste von Zahlen. Wir betrachten: Insert-Sort Bubble-Sort Merge-Sort Quick-Sort Sortieren durch Einfügen Sortieren durch binäres Vertauschen Sortieren durch rekursives Mischen Sortieren durch rekursive Zerlegung und Vergleichen Es gibt noch weitere Sortierverfahren P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 4

5 Sortieren Sortierprogramme in Haskell für Listen Demonstration der Prinzipien Abschätzung der Komplexität Sortierprogramme in Python für Array Prinzipien der destruktiven Abänderung In-place-Algorithmen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 5

6 Sortieren durch Einfügen (Insert-Sort) Idee: geordnetes Einfügen der Elemente in die bereits sortierte Liste Sortiere: 5,3,99,1,2,7 sortierte Liste restliche Elemente 5 3,99,1,2,7 3,5 99,1,2,7 3,5, 99 1,2,7 1,3,5, 99 2,7 1,2,3,5, ,2,3,5, 7, 99 P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 6

7 Insert-Sort: Haskell-Programm Sortieren durch Einfügen: sorteinfuegen xs = sorteinfuegenr xs [] sorteinfuegenr: unsortierter Rest, sortierter Anteil sorteinfuegenr [] ys = ys sorteinfuegenr (x:xs) [] = sorteinfuegenr xs [x] sorteinfuegenr (x:xs) ys = sorteinfuegenr xs (sorteinfuegenr1 x ys) sorteinfuegenr1 x [] = [x] sorteinfuegenr1 x (y:ys) = if x <= y then x:y:ys else y : (sorteinfuegenr1 x ys) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 7

8 Sortieren mit Blasensort (Bubble-Sort) Vertauschung von benachbarten Elementen; falls notwendig: Mehrfaches Durcharbeiten der Liste P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 8

9 Bubble-Sort: Haskell-Programm Sortieren durch Vertauschen von benachbarten Feldern bubblesort [] = [] bubblesort [x] = [x] bubblesort xs = let y:resty = bubblesort1 xs in y: (bubblesort resty) bubblesort1 [x] = [x] bubblesort1 (x:rest) = let (y:resty) = bubblesort1 rest in if x > y then y:x: resty else (x: y:resty) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 9

10 Bubble-Sort mit Optimierung: Haskell-Programm bubblesorto [] = [] bubblesorto [x] = [x] bubblesorto xs = let (aenderung,y:resty) = bubblesorto1 xs in if aenderung then y: (bubblesorto resty) else xs bubblesorto1 [x] = (False,[x]) bubblesorto1 (x:rest) = let (aenderung, y:resty) = bubblesorto1 rest in if x > y then (True,y:x: resty) else (aenderung,x: y:resty) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 10

11 Quicksort: Rekursives Zerlegen Idee Pivot = erstes Element der Liste: Zerlege Liste in Teillisten von Elemente, die bzgl Pivot: kleinere, grössere und gleiche Elemente enthalten Sortiere diese rekursiv (Quicksort) Füge sie zusammen. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 11

12 Quicksort: Beispiel Sortiere: 5,3,99,1,2,7 Pivot 5 kleinere/größere Elte 3,1,2 99,7 Pivots 1 99 kleinere/größere Elte 2,3 7 - Pivots 2 kleinere/größere Elte 3 Zusammensetzen: 1,2,3,5,7,99 P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 12

13 Sortieren mit Quicksort: Haskell-Programm quicks [] = [] quicks [x] = [x] quicks [x,y] = if x <= y then [x,y] else [y,x] quicks (x:xs) = let (llt,lge) = splitlist x xs in (quicks llt) ++ (x: (quicks lge)) splitlist x y = splitlistr x y [] [] splitlistr x [] llt lge = (llt,lge) splitlistr x (y:ys) llt lge = if y < x then splitlistr x ys (y: llt) lge else splitlistr x ys llt (y:lge) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 13

14 Mergesort: Sortieren durch Mischen Rekursives Verfahren: Zerlege Liste in erste und zweite Hälfte sortiere beide rekursiv zusammenmischen Sortiere: 5,3,99,1,2,7 Zerlegen 5,3,99 1,2,7 Zerlegen 5 3,99 1 2, ,99 1 2,7 Merge 3,5,99 1,2,7 Merge 1,2,3,5,7,99 P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 14

15 Sortieren mittels Mischen: Haskell-Programm mischsort xs = mergesort (length xs) xs mergesort _ [] = [] mergesort _ [x] = [x] mergesort _ [x,y] = if x <= y then [x,y] else [y,x] mergesort len xs = let lenh = len div 2 in mische (mergesort lenh (take lenh xs)) (mergesort (len -lenh) (drop lenh xs)) mische [] ys = ys mische xs [] = xs mische (x:xs) (y:ys) = if x <= y then x: (mische xs (y:ys)) else y: (mische (x:xs) ys) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 15

16 Sortieren: Mindestanzahl der Vergleiche Satz Sortieren einer Liste von n Zahlen durch Vergleichsoperationen benötigt im schlechtesten Fall mindestens n log 2 (n) Vergleiche. Argumentation: Ein Entscheidungsbaum-Programm zur Länge n sortiert eine Eingabeliste [a 1,..., a n ] der Länge n folgendermaßen: An den Verzweigungen wird die Frage gestellt: ist a i > a j? für bestimmte (feste) Indizes i, j, die Ausgabe am Ende ist die sortierte Permutation der Eingabeliste. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 16

17 Sortieren: Mindestanzahl der Vergleiche Es gibt immer eine Eingabeliste, so dass n log 2 (n) Vergleiche zum Sortieren nötig sind Begründung: Der Entscheidungsbaum hat n! Blätter, da jede Eingabereihenfolge möglich ist. Die Tiefe d des Baumes > log 2 (n!). Offenbar: n! } {{ } n/2 n/2... n/2 } {{ } n/2 = (n/2) (n/2). log 2 (n!) > log((n/2) (n/2) ) = 0.5 n llog(n/2) = 0.5 n (log 2 (n) 1). D.h. Ω(n llog 2 (n)). P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 17

18 Sortieren: Mindestanzahl der Vergleiche(3) Abschätzung kann leicht verbessert werden mittels der Stirlingformel für n!. Aber: Man konnte noch nicht allgemein nachweisen, dass dies auch eine untere Schranke ist, wenn man alle Algorithmen zulässt. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 18

19 Eigenschaften der Sortierverfahren Zeitbedarf im schlechtesten Fall / besten Fall / im Mittel Stabilität Ein Sortierverfahren ist stabil, wenn die Reihenfolge von Elementen mit gleichem Sortierschlüssel erhalten bleibt. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 19

20 Eigenschaften des Insert-Sort Gut für kleinere Listen, oder fast sortierte Listen im schlechtesten Fall: O(n 2 ): Für Listen der Länge n höchstens: (n 1) Vergleiche im besten Fall: O(n) für vorsortierte Listen. Die Haskell-Implementierung ist stabil. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 20

21 Insert-Sort: Variante Folgende Variante des Insert-sort ist stabil und hat Komplexität O(n) für vorsortierte Listen: sorteinfuegeno xs = reverse (sorteinfuegenor xs []) sorteinfuegenor [] ys = ys sorteinfuegenor (x:xs) [] = sorteinfuegenor xs [x] sorteinfuegenor (x:xs) ys = sorteinfuegenor xs (sorteinfuegenor1 x ys) sorteinfuegenor1 x [] = [x] sorteinfuegenor1 x (y:ys) = if x >= y then x:y:ys else y : (sorteinfuegenor1 x ys) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 21

22 Eigenschaften des Bubble-Sort Gut: wenn Elemente schon in der Nähe ihres endgültigen Platzes sind. im schlechtesten Fall: (n 1) + (n 2) = O(n 2 ) im besten Fall: O(n), wenn Liste schon sortiert Stabil, wenn gleiche Elemente nicht vertauscht werden. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 22

23 Eigenschaften des Quicksort im schlechtesten Fall: O(n 2 ), wenn Liste bereits sortiert im besten Fall: O(n log(n)) Im Mittel: O(n log(n)) Gut: wenn Listen groß und Werte zufällig verteilt. Beim Experimentieren in Haskell mit zufällig erzeugten Listen ist es das beste Verfahren Haskell-Implementierung ist stabil, P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 23

24 Eigenschaften des Mischsort im schlechtesten Fall: O(n log(n)). Im besten Fall: auch O(n log(n)). Gut: Wenn keine Komplexitäts-Ausrutscher vorkommen sollen Experiment: in Haskell ist es nur dann besser als Quicksort, wenn Teile der Listen bereits sortiert sind. Stabil, wenn der Merge Stabilität beachtet: D.h. wenn gleiche Elemente aus der linken Liste vor denen aus der rechten Liste einsortiert werden. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 24

25 Genauere Begründung Komplexität des Mischsort Behauptung: Mischsort hat einen Zeitbedarf von O(n log(n)) Abschätzung von red ms : red ms (n) = c + red mische (n) + 2 red ms (n/2) = c + n + 2 red ms (n/2) c + n + 2 (c + n/2) + 4 red ms (n/4) = (c + n) + (2c + n) + (4c + n) + (8c + n) +... Tiefe der Rekursionen: log 2 (n) c n + n log 2 (n) + 2 log 2 (n). d.h. der Mischsort ist O(n log(n)). P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 25

26 Sortierprogramme in imperativen Programmiersprachen, Speicherverwaltung Zusätzlicher Aspekt: effiziente Speicherverwaltung Falls Sortierung innerhalb des Eingabe-Arrays: In-Place- Verfahren. Insertion-Sort, Bubble-Sort, Quick-Sort: In-Place-Verfahren Merge-Sort: Es gibt ein effizientes In-Place-Merge-Verfahren, der Algorithmus ist nicht so offensichtlich zu finden. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 26

27 Bubblesort in Python, in-place def Bubblesort(soArray): laenge = len(soarray) for i in range(0,laenge-1): aenderung = 0 for j in range(0,laenge-1-i): if soarray[j] > soarray[j+1]: vertausche(soarray,j, j+1) aenderung = 1 if aenderung == 0: break P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 27

28 Insertsort in Python, in-place def Insertsort(soArray): laenge = len(soarray) for i in range(1,laenge): for j in range(i,0,-1): if soarray[j] < soarray[j-1]: vertausche(soarray,j, j-1) else: break P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 28

29 Quicksort in Python, in-place def Quicksort(soArray): return Quicksortr(soArray,0,len(soArray)-1) def Quicksortr(soArray,iLo,iHi): if (ihi-ilo == 1): ##Optimierung if_groesser_then_tausch(soarray,ilo,ihi); return soarray; Lo = ilo; Hi = ihi; Mid = (Lo + Hi) / 2; P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 29

30 Quicksort in Python, in-place, (2) while (Lo <= Hi): while (iskleiner(soarray,lo,mid)): Lo = Lo+1 while (isgroesser(soarray,hi,mid)): Hi = Hi -1; if (Lo <= Hi): if (Mid == Hi): Mid = Lo; elif (Mid == Lo): Mid = Hi; if (Lo!= Hi): vertausche(soarray,lo, Hi); Lo = Lo +1; Hi = Hi-1; if (Hi > ilo): Quicksortr(soArray,iLo, Hi); if (Lo < ihi): Quicksortr(soArray,Lo, ihi); return soarray P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 30

31 Quicksort in Python, in-place, (3) def isgroesser(soarray,x,y): def iskleiner(soarray,x,y): return (soarray[x] > soarray[y]) return (soarray[x] < soarray[y]) def vertausche(soarray,ind1, ind2): x = soarray[ind1]; soarray[ind1] = soarray[ind2]; soarray[ind2] = x; def if_groesser_then_tausch(soarray,ind1,ind2): if isgroesser(soarray,ind1,ind2): vertausche(soarray,ind1, ind2); P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 31

32 Eigenschaften der in-place Sortierverfahren Imperative in-place Sortierverfahren: Isert-Sort ist stabil Bubble-Sort ist stabil imperativer Quicksort ist nicht stabil effizienter Merge-Sort ist stabil P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 32

33 Datenabstraktion, Abstrakte Daten-Typen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 33

34 Datenabstraktion Strukturierungsmethode für Programme und Implementierungen unabhängig von einer Programmiersprache verwendbar Prinzip: Trennung von interner Implementierung der Daten, interner Zugriffsfunktionen externem Zugriff P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 34

35 Was man vermeiden sollte Gilt auch für Module Durchgriff auf die Implementerung Schein-Argumente: Effizienz, Bequemlichkeit kann langfristig zu Wartungs-Problemen führen, z.b. bei Änderung der internen Implementierung des Moduls Verwenden des durch die Implementierung bedingten, aber nicht garantierten, Verhaltens Z.B. bei Implementierung von Mengen: Reihenfolge der Elemente nicht ausnutzen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 35

36 Datenabstraktion Funktionen auf einem abstrakten Datentyp: Konstruktoren bzw. Eingabe der Objekte Fallunterscheidung nach den Konstruktoren und Selektoren; bzw. Frage nach der logischen Struktur der Datenobjekte, bzw. Ausgabe der Objekte, interne Service-Funktionen. Z.B. Operatoren auf Objekten, Gleichheitstests, usw. externe Service-Funktionen. Z.B. die Funktion map auf Listen. Datenkonversionen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 36

37 Datenabstraktion Wesentliche Aspekte, analog zu Modulen, sind: Die Daten sind über klar definierte Zugriffsfunktionen verfügbar Die Algorithmen verwenden nur diese Zugriffsfunktionen Die Daten haben eine Semantik, die von der Implementierung respektiert wird. Die Implementierung der Daten und Zugriffe ist nicht sichtbar (Kapselung, Information hiding). Schnittstellen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 37

38 Beispiel: Listen Konstruktoren: Selektoren: cons, nil head, tail Beispiel für Gleichheitsaxiome: head(cons s t) = s tail(cons s t) = t nil (cons s t) P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 38

39 Haskell-Listen Haskell-Listen erfüllen diese Axiome: Definitionen: head (x:y) = x tail (x:y) = y cons x y = x:y nil = [] Nachrechnen ergibt: [] s : t. head (cons s t ) reduziert zu s. tail (cons s t) reduziert zu t. head nil führt zu einem Fehler (d.h. undefiniert). P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 39

40 Datentyp natürliche Zahl Konstruktoren Null, S S(S(S(Null))) der Zahl: 3. alle arithmetischen Operatoren sind implementierbar Zahlen in Programmiersprachen: binäre Strings Gleiche Funktionalität, aber effizienter P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 40

41 Datentyp ganze Zahlen Benutzt Datentyp der natürlichen Zahlen Darstellung als Paar (s, n) Vorzeichen positive Zahl Diese Darstellung hat eine Doppeldeutigkeit (+, 0) oder (, 0) sind zwei Darstellungen der 0. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 41

42 Der Datentyp Rationale Zahlen Funktionen zum Erzeugen und Anzeigen arithmetische Operationen:, /, +, Vergleiche: <, Konversionen Int Rational Axiom: beim Drucken erscheint stets die gekürzte Darstellung Verschiedene interne Darstellungen sind möglich: man hat freie Wahl, ob und wann (intern) gekürzt wird. Datekonversionen: Integer Rational Rational Integer P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 42

43 Gleitkommazahlen Funktionen: Erzeugen, Anzeigen, mathematische Operationen:, /, +, Vergleiche... Erfüllen nicht die mathematischen Axiome für reelle Zahlen sinnvoll wäre: Axiome, die Näherung an reelle Zahlen beschreiben. Standardisierungen und Normierungen: auf der Basis der internen Darstellung für Rundungen und Fehlermeldungen bei Ausnahmen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 43

44 Der abstrakte Datentyp Menge Endliche Mengen mit Elementen von gleichem Typ folgende Funktionalität ist sinnvoll: Erzeugen von Mengen, gegeben endliche Aufzählung der Elemente Test auf Enthaltensein eines Elementes in einer Menge Drucken einer Menge Kardinalität einer Menge Bildung von Schnitt, Vereinigung, Differenz, Potenzmenge Test auf Gleichheit von Mengen Notwendig: Gleichheitstest für Elemente. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 44

45 Datentyp Menge : Beispiel Eingabe: {(1, 2), (2, 4)} = {(1, 2)} falls rationale Zahlen gemeint sind. Aber: = {(1, 2), (2, 4)}, falls Paare komplexe Zahlen darstellen. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 45

46 Der abstrakte Datentyp Multimenge Endliche Multimengen mit Elementen von gleichem Typ, wobei Elemente mehrfach vorkommen dürfen. Multimengen sind wie Listen, bei denen man von der Reihenfolge der Elemente absieht. Notwendige Funktionalitäten analog wie bei Mengen. Beispielsweise gilt für Multimengen {1, 1, 1, 2, 2} {1, 1, 2, 2, 2} = {1, 1, 2, 2} und {1, 1, 1, 2, 2} {1, 1, 2, 2, 2} = {1, 1, 1, 1, 1, 2, 2, 2, 2, 2}. Implementierung von Multimengen: auf der Basis von Listen. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 46

47 Datentyp Multi-Menge : Beispiel Notwendig auch für Multimengen: Gleichheitstest für Elemente. Beispiel-Eingabe: {(1, 2), (2, 4)} = {(1, 2), (1, 2)} falls Paare rationale Zahlen darstellen. Aber: = {(1, 2), (2, 4)}, mit (1, 2) (2, 4) falls Paare komplexe Zahlen darstellen. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 47

48 Axiome für Multimenge Konstruktoren und Funktionen: cons, null, anzahl, einfuegen,... Typ wäre (Multimenge a) Zwei exemplarische Axiome: anzahl null = 0 s :: a, t :: Multimenge a : anzahl(einfuegen s t) = (anzahl t) + 1 Implementierung mit anzahl = length, einfuegen = cons Diese ist korrekt, denn: anzahl null length [] 0 anzahl (einfuegen s t) length (cons s t) (length t) + 1. P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 48

49 Mengen: Implementierung endliche Mengen: Implementierungsmöglichkeiten: Listen von Elementen sortierte Listen von Elementen Such-Bäume Multimengen von Elementen Aber: problematisch: Datentyp unendliche Liste oder unendliche Menge nur eingeschränkt implementierbar nicht alle unendlichen Mengen sind endlich darstellbar. Gleichheitstest von unendlichen Mengen P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 49

50 Abstraktionsbarrieren Abstraktionsbarrieren für die Beispiele Mengen / Multimengen / Listen sind: Mengen: Schnitt,... Schnittstellenfunktionen Multimengen: Schnitt, Vereinigung, Gleichheit,... Schnittstellenfunktionen Listen. append, element,... P raktische Informatik 1, W S 2004/05, F olien Sortieren 1, (14. Januar2005) Seite 50

51 Die Barrieren (Schnittstellen) erlauben sauberes zverlässiges Programmieren Die Effizienz kann durch Schnittstellen etwas verschlechtert werden.

Sortieren durch Einfügen (Insertion Sort) fügt die restlichen Elemente nach und nach in die bereits sortierte Liste der abgearbeiteten Zahlen.

Sortieren durch Einfügen (Insertion Sort) fügt die restlichen Elemente nach und nach in die bereits sortierte Liste der abgearbeiteten Zahlen. Kapitel 6 Sortieren 6.1 Sortiermethoden Die Sortierung von Mengen von Datensätzen ist eine häufige algorithmische Operation auf Mengen bzw. Folgen von gleichartigen Datenobjekten (insbesondere in der betriebswirtschaftlichen

Mehr

Grundlagen der Programmierung 2. Sortierverfahren

Grundlagen der Programmierung 2. Sortierverfahren Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge

Mehr

Grundlagen der Programmierung 2. Operationale Semantik

Grundlagen der Programmierung 2. Operationale Semantik Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung

Mehr

Informatik II Sortieren

Informatik II Sortieren lausthal Sortieralgorithmen Informatik II Sortieren Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die die meiste Rechenzeit verbrauchen viele raffinierte Methoden

Mehr

Informatik II Sortieren

Informatik II Sortieren lausthal Informatik II Sortieren. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Sortieralgorithmen Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Analyse von Algorithmen Die O-Notation WS 2012/2013 Prof. Dr. Margarita Esponda Freie Universität Berlin 1 Korrekte und effiziente Lösung von Problemen Problem Wesentlicher Teil der Lösung eines Problems.

Mehr

(08 - Einfache Sortierverfahren)

(08 - Einfache Sortierverfahren) Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um

Mehr

Ströme als unendliche Listen in Haskell

Ströme als unendliche Listen in Haskell Ströme als unendliche Listen in Haskell Strom := Folge oder Liste von Daten, unbegrenzt viele Daten-Elemente. Ströme sind in Haskell als als (potentiell) unendliche Listen darstellbar und programmierbar

Mehr

Die Korrektheit von Mergesort

Die Korrektheit von Mergesort Die Korrektheit von Mergesort Christoph Lüth 11. November 2002 Definition von Mergesort Die Funktion Mergesort ist wie folgt definiert: msort :: [Int]-> [Int] msort xs length xs

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. Sortieren 4.1 Vorbemerkungen . Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

INFORMATIK FÜR BIOLOGEN

INFORMATIK FÜR BIOLOGEN Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie

Mehr

Grundlagen der Programmierung 2. Unendliche Listen und Ströme(B)

Grundlagen der Programmierung 2. Unendliche Listen und Ströme(B) Grundlagen der Programmierung 2 Unendliche Listen und Ströme(B) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 17. Mai 2006 Beispiel: scanl, scanr scanl berechnet das foldl

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 20.5.15 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort

Mehr

Vorkurs Mathematik für Informatiker

Vorkurs Mathematik für Informatiker Vorkurs Mathematik für Informatiker 6. Ordnungsrelationen Thomas Huckle, Kilian Röhner Technische Universität München 9.10.2017 Graphen Graph besteht aus Knoten (Ecken) und Kanten (Verbindungen zwischen

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Sortieren durch Mischen (Mergesort; John von Neumann 1945)

Sortieren durch Mischen (Mergesort; John von Neumann 1945) Sortieren durch Mischen (Mergesort; John von Neumann 1945) Gegeben folgendes Feld der Größe 10. 3 8 9 11 18 1 7 10 22 32 Die beiden "Hälften" sind hier bereits vorsortiert! Wir können das Feld sortieren,

Mehr

Algorithmen und Datenstrukturen I

Algorithmen und Datenstrukturen I Algorithmen und Datenstrukturen I Sortierverfahren D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Winter 2009/10, 18. Januar 2010,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A3. Sortieren: Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März 2018 Sortieralgorithmen Inhalt dieser Veranstaltung A&D Sortieren Komplexitätsanalyse

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

Mergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie

Mergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie Mergesort aus Wikipedia, der freien Enzyklopädie Mergesort ist ein rekursiver, stabiler Sortieralgorithmus, der ähnlich wie Quicksort nach dem Prinzip Teile und herrsche (engl. Divide and conquer) arbeitet.

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Suchen und Sortieren

Suchen und Sortieren Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

A3.1 Sortieralgorithmen

A3.1 Sortieralgorithmen Algorithmen und Datenstrukturen 1. März 2018 A3. : Selection- und Insertionsort Algorithmen und Datenstrukturen A3. : Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März

Mehr

Programmiertechnik II

Programmiertechnik II Sortieren: Einfache Algorithmen Sortieren Abstrakte Operation geg: Menge von items (Elemente) jedes Element besitzt Sortierschlüssel Schlüssel unterliegen einer Ordnung eventuell sind doppelte Schlüssel

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung.

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung. Vortrag: Bäume in Haskell Bäume in Haskell Vortrag Christoph Forster Thomas Kresalek Fachhochschule Wedel University of Applied Sciences 27. November 2009 Christoph Forster, Thomas Kresalek 1/53 Vortrag

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Sortierverfahren. Sortierverfahren für eindimensionale Arrays Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Algorthmen und Programmeren II Sorteralgorthmen mperatv Tel II Prof. Dr. Margarta Esponda Free Unverstät Berln Tele und Herrsche "Dvde und Conquer" Vele Probleme lassen sch ncht mt trvalen Schlefen lösen

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

Listenverarbeitung in Python

Listenverarbeitung in Python Listenverarbeitung in Python Datentypen für Sequenzen von Objekten: Tupel, Listen und Strings Tupel und Listen sind analog zu Haskells Tupel und Listen: (1, 2, 3) 3-Tupel aus den Zahlen 1,2,3, [1, 2, 3]

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

Mehr

Sortieren & Co. KIT Institut für Theoretische Informatik

Sortieren & Co. KIT Institut für Theoretische Informatik Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut

Mehr

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7. Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort

Mehr

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

Mehr

Programmierung 1 - Repetitorium

Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage: http://info1.marcwagner.info Donnerstag, den 10.04.03 Kapitel 7 Korrektheit 7.1 Abstrakte Prozeduren Abstrakte Prozedur

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung

Mehr

Stackmaschine; Speicheradressierung

Stackmaschine; Speicheradressierung Stackmaschine; Speicheradressierung Erweiterung um globalen Speicher (Heap, Halde) pro Speicherplatz eine Zahl. Notation ist als Array SP [0..]. Zugriff mittels Adresse (Index): eine Zahl i.a.: Zahlen

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen:

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Peano-Zahlen, Listen, Bäume Rekursive Funktionen strukturelle

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch

Mehr

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur -

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Punkte: A1: 30, A2: 20, A3: 20, A4: 20, A5: 10, A6: 20 Punkte: /120 12.02.2012 Hinweis: Geben Sie bei allen

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-

Mehr

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 17 Sortieren

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 17 Sortieren Einführung in die Informatik Algorithmen und Datenstrukturen Thema 17 Sortieren Sortierproblem Es gibt eine Menge von Datensätzen, und jeder dieser Sätze besitzt einen (möglichst eindeutigen) Schlüssel.

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:

Mehr

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:... ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer

Mehr

Heapsort. Erstellung eines Heaps

Heapsort. Erstellung eines Heaps Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array

Mehr

Heapsort. 1. Erstelle aus dem gegebenen Array einen Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Heapsort. 1. Erstelle aus dem gegebenen Array einen Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array

Mehr

Ströme als unendliche Listen in Haskell

Ströme als unendliche Listen in Haskell Kapitel 3 Ströme als unendliche Listen in Haskell Ein Strom ist eine Folge oder Liste von Daten, die man in Haskell als Liste bzw. auch als potentiell unendliche Liste darstellen kann. Die Modellvorstellung

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 4 (30.4.2018) Sortieren IV Algorithmen und Komplexität Analyse Merge Sort Laufzeit T(n) setzt sich zusammen aus: Divide und Merge: O n

Mehr

Algorithmen und Programmieren II

Algorithmen und Programmieren II Algorithmen und Programmieren II Sortieralgorithmen (Teil III) 2 46 69 4 5 6 4 4 0 8 9 0 6 4 2 Prof. Dr. Margarita Esponda Sortieralgorithmen Vergleichs- Algorithmen quadratisch Bubblesort O(n 2 ) Insertsort

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II und Red-Black-Trees Dr. Georg Sauthoff 1 AG Praktische Informatik July 1, SoSe 2011 1 gsauthof@techfak.uni-bielefeld.de Suchbäume (Indexdatenstrukturen) Zugriff in O(logn)

Mehr

Paradigmen der Programmierung

Paradigmen der Programmierung SS 11 Prüfungsklausur 25.07.2011 Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)]

Mehr

Operationale Semantik: Haskell

Operationale Semantik: Haskell Kapitel 4 Operationale Semantik: Haskell 4.1 Semantik von Programmiersprachen Programme sind zunächst mal nur Text. Programme sollen aber etwas im Rechner bewirken bzw. eine Funktion oder Funktionalität

Mehr

Klausur - Informatik I SS 05. Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel

Klausur - Informatik I SS 05. Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel Klausur - Informatik I SS 05 Aufgabe 1 2 3 4 Punkte 40 30 40 10 Gesamtpunkte (max. 120): Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel Tragen Sie als erstes Ihren vollständigen Namen und Ihre Matrikelnummer

Mehr

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: Typprüfung (Compiler / Laufzeit) In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: 1) Der Compiler prüft

Mehr

Datenstrukturen Kurzanleitung

Datenstrukturen Kurzanleitung Datenstrukturen Kurzanleitung Insertionsort p = (7, 5, 4, 83, 6, 6) n = 6 Start: K ist sortierte Folge. Für i =, 3, 4,..., n: Füge ki in eine sortierte Folge ( k, k, k 3,..., k n ) in der richtigen Position

Mehr

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n) Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und

Mehr

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203 Inhaltsübersicht Vorwort 15 Vorwort zur deutschen Ausgabe 22 Kapitel 1 Elemente der Programmierung 25 Kapitel 2 Funktionen und Module 203 Kapitel 3 Objektorientierte Programmierung 335 Kapitel 4 Algorithmen

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 23

Inhaltsverzeichnis. Teil 1 Grundlagen 23 Inhaltsverzeichnis Vorwort 11 Umfang 12 Einsatz als Unterrichtsmittel 12 Algorithmen mit Praxisbezug 13 Programmiersprache 14 Danksagung 15 Vorwort des C++-Beraters 16 Hinweise zu den Übungen 21 Teil 1

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85 Inhaltsverzeichnis Vorwort 13 Umfang 14 Einsatz als Unterrichtsmittel 14 Algorithmen mit Praxisbezug 15 Programmiersprache 16 Danksagung 17 Vorwort des Java-Beraters 18 Hinweise zu den Übungen 19 Teil

Mehr

Geheimnisprinzip: (information hiding principle, Parnas 1972)

Geheimnisprinzip: (information hiding principle, Parnas 1972) 2. Abstrakte Datentypen 2.0 Begriffe Geheimnisprinzip: (information hiding principle, Parnas 1972) Zugriffe auf Teile einer Programmeinheit, die für die reguläre Benutzung nicht erforderlich sind, sollten

Mehr

6 Sortieren. Speziell ist zu beachten, dass viele Sortier-Algorithmen auf Array-Strukturen zwar sehr schnell aber nicht stabil sind.

6 Sortieren. Speziell ist zu beachten, dass viele Sortier-Algorithmen auf Array-Strukturen zwar sehr schnell aber nicht stabil sind. 6 Sortieren Sortierprogramme werden vorallem für die die Präsentation von Daten benötigt, wenn die Daten zum Beispiel sortiert nach Zeit, Grösse, letzten Änderungen, Wert,... dargestellt werden sollen.

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

Mehr

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10. Universität Bielefeld AG Praktische Informatik 10. Dezember 2014 Wiederholung: Schema: f :: [σ] -> τ f [] = e 1 f (a : as) = e 2 where s = f as wobei e 1 und e 2 Ausdrücke vom Typ τ sind und e 2 die Variablen

Mehr

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

damit hätten wir nach Ende der Schleife: a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge. Korrektheit Invariante: a[0 k-1] enthält nur Elemente aus a[0 k-1], aber in sortierter Reihenfolge Terminierung: Die Schleife endet mit k=n def insertionsort(a): for k in range( 1, len(a) ): while i >

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Präsenzübung Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Dienstag, 28. Mai 2013 Nachname: Vorname: Matrikelnummer: Studiengang:

Mehr

Zahlen in Haskell Kapitel 3

Zahlen in Haskell Kapitel 3 Einführung in die Funktionale Programmiersprache Haskell Zahlen in Haskell Kapitel 3 FH Wedel IT-Seminar: WS 2003/04 Dozent: Prof. Dr. Schmidt Autor: Timo Wlecke (wi3309) Vortrag am: 04.11.2003 - Kapitel

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr