Sortieren. Ziel: Bringe Folge von Objekten in eine bestimmte Reihenfolge. Beispiel
|
|
- Hede Beltz
- vor 7 Jahren
- Abrufe
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.
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
MehrGrundlagen 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
MehrGrundlagen 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
MehrInformatik 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
MehrInformatik 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
MehrProf. 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)
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
MehrStrö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
MehrDie 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
MehrEinfü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
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
MehrJAVA - 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
MehrUE 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
Mehr4. 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
Mehr3.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
MehrINFORMATIK 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
MehrGrundlagen 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
MehrProgrammieren 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
MehrAbschnitt 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 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
MehrVorkurs 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
MehrAlgorithmen 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 Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
MehrProgrammieren 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
MehrSortieren 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,
MehrAlgorithmen 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,
MehrAlgorithmen 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
MehrGrundlegende 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
MehrGrundlegende 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.
MehrKapitel 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
MehrMergesort. 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.
MehrKapitel 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
MehrWas 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
MehrSuchen 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
Mehr2 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
MehrA3.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
MehrProgrammiertechnik 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
Mehrf 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
MehrAgenda. 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
MehrAlgorithmen 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 Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
MehrSortierverfahren. 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
MehrProf. 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
MehrGrundlegende 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
MehrProf. 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 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
MehrListenverarbeitung 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]
MehrDatenstrukturen 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
MehrWS 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
MehrSortieren & 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
MehrA7.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
MehrHeapsort. 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
MehrAlgorithmen 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
MehrWS 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
MehrProgrammierung 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 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
MehrStackmaschine; 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 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten
MehrPrä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
MehrWas 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
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrINSTITUT 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
MehrDatenstrukturen 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-
MehrEinfü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.
MehrAlgorithmen 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
Mehr13. 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:
Mehr1. 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
MehrHeapsort. 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
MehrHeapsort. 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
MehrStrö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
Mehr13. 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
MehrInformatik 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
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrAlgorithmen 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)
MehrParadigmen 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)]
MehrOperationale 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
MehrKlausur - 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
MehrIn 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
MehrDatenstrukturen 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
MehrT (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
MehrInhaltsü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
MehrInhaltsverzeichnis. 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
MehrInhaltsverzeichnis. 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
MehrGeheimnisprinzip: (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
Mehr6 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.
Mehr14. 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
MehrProgrammieren 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
Mehrdamit 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 >
MehrHeapsort, 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:
MehrDatenstrukturen 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:
MehrZahlen 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
MehrGrundlagen: 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