Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1

Größe: px
Ab Seite anzeigen:

Download "Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1"

Transkript

1 Sortieren 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1

2 Sortiermethoden (Auswahl) Allgemeine Methoden: Sortieren in Arrays Spezielle Methoden: Sortieren von Dateien 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 2

3 Sortieren in Arrays Direkte Methoden (langsam, immer 2 verschachtelte Schleifen) Bubble-Sort (Exchange-Sort, Sortieren durch Austauschen) Selection-Sort (Sortieren durch Auswählen) Insertion-Sort (Sortieren durch Einfügen) Schnelle Methoden Heap-Sort Quick-Sort Merge-Sort ShellSort 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 3

4 Sortieren in Arrays Direkte Methoden (langsam, immer 2 verschachtelte Schleifen) Bubble-Sort (Exchange-Sort, Sortieren durch Austauschen) Selection-Sort (Sortieren durch Auswählen) Insertion-Sort (Sortieren durch Einfügen) Schnelle Methoden Heap-Sort Quick-Sort Merge-Sort ShellSort 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 4

5 Sortieren von Dateien 3-Band-Mischen Einphasen-Mischen (ausgeglichenes Mischen) Natürliches Mischen Mehrphasen-Mischen 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 5

6 Bubble Sort Innere Schleife: Die benachbarten Zahlen werden in ein bubble eingeschlossen und wenn nötig ausgetauscht Die Blase verschiebt sich bis zum Array-Ende Nach 1 Durchlauf durch die äußere Schleife ist die größte (oder kleinste) Zahl ermittelt Äußere Schleife: Falls die größte (kleinste) Zahl bekannt, wird im Rest-Array nach weiterem Maximum (Minimum) gesucht In der äußeren Schleife werden die Margins für den aktuellen Array-Teil festgelegt 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 6

7 Bubble Sort - Beispiel Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 7

8 Bubble Sort mit Merker - Beispiel Merker ausgetauscht löschen Tauschen war notwendig, Merker gesetzt weiter machen, nur wenn Merker gesetzt Merker ausgetauscht löschen kein Tauschen notwendig, Merker bleibt gelöscht kein Tauschen notwendig, Merker bleibt gelöscht kein Tauschen notwendig, Merker bleibt gelöscht Schluss machen! 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 8

9 Selection Sort Wie intuitives Sortieren von wenigen Zahlen: Minimum finden, dann unter den restlichen Zahlen Minimum finden, usw. Innere Schleife: Die 1. Zahl wird als Minimum bezeichnet Sollte die nächste Zahl noch kleiner sein, so wird der Mimimum- Eintrag (Variable min) korrigiert min wird mit der linken Randzahl des aktuellen Array-Abschnitts ausgetauscht Äußere Schleife: Margins für den aktuellen Array-Abschnitt werden festgelegt 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 9

10 Selection Sort - Beispiel tauschen min imin min imin tauschen min imin min imin tauschen 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren kein Tauschen nötig

11 Insertion Sort Sortieren durch Einfügen - Konzept: 2 Zahlen werden sortiert, jede weitere Zahl wird zwischen die bereits sortierten Zahlen eingefügt, bzw. am Anfang oder am Ende einsortiert Algorithmische Umsetzung Grundidee: Äußere Schleife: Von links werden jeweils 2 benachbarte Zahlen in eine Blase eingeschlossen, betrachtet und ggf. ausgetauscht Innere Schleife: nach jedem in der äußeren Schleife erfolgten Tauschvorgang wird die Blase zurück nach links verschoben und es wird geprüft, ob die Ordnung immer noch stimmt; anderseits werden auch diese Zahlen getauscht die Rückwärtsprüfung wird abgebrochen, sobald 1x nicht getauscht werden muss die innere Schleife kommt eventuell nicht einmal zur Ausführung 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 11

12 Insertion Sort (Grundidee) - Beispiel tauschen kein Tauschen notwendig, innere Schleife wird gar nicht ausgeführt tauschen tauschen tauschen tauschen kein Tauschen notwendig, aufhörten, weiter nach links nicht mehr prüfen kein Tauschen notwendig 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 12

13 Insertion Sort - Verbesserung Verbesserung der algorithmischen Umsetzung: es werden nicht die ganzen Tauschvorgänge gemacht, Sondern nur die halben d.h. zunächst überschreibt der linke Nachbar den rechten wenn keine Tauschvorgänge mehr nötig sind, erst dann nehmen wir die Zahl die ursprünglich ganz rechts war (diese müssen wir und natürlich vorher merken) und veranlassen, dass diese Zahl die Zahl ganz links überschreibt. Eigentlich lassen wir dadurch alle am Tauschen beteiligte Zahlen nach rechts rotieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 13

14 kopieren nächster Hilfsvariable zurück kopieren nächster 37 kein Tauschen notwendig, innere Schleife wird gar nicht ausgeführt kopieren nächster kopieren nächster Hilfsvariable prüfen, kein zurück kopieren Tauschen notwendig, weiter nach links nicht mehr prüfen Hilfsvariable zurück kopieren prüfen, kein 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 14 Tauschen notw. 15 kopieren kopieren (verbessert) - Beispiel Insertion Sort

15 Merge Sort - Vorstudie 2 vorsortierte Arrays in ein 3. Array mischen (mergen) Array1 (Quelle1) Array2 (Quelle2) Array3 (Ziel) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren Die kleinere der beiden Zahlen, auf die die Zeiger zeigen, wird in das Zielfeld kopiert Dort, von wo die Zahl kopiert wurde, verschiebt sich der Zeiger nach rechts Array1 (Quelle1) Array2 (Quelle2) Array3 (Ziel) Falls ein Array am Ende, Rest des anderen Array kopieren

16 Merge Sort Idee: Prinzip: Divide et impera Array mit unsortierten Zahlen solange teilen, bis 1-Element-Arrays entstehen In den 1-Element-Arrays sind die Zahlen bereits sortiert!!! Die Arrays werden in umgekehrter Reihenfolge des Teilens wieder gemischt Programmtechnische Umsetzung: Rekursiv! Teil-array teilen und sofort mischen Rekursiver Abschluß: 1-Element-Arrays Beispiel: Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 16

17 Quick Sort #1 Die Idee: Prinzip: Divide et impera Im Array von unsortierten Zahlen wird ein sog. Pivot-Element bestimmt (i.d.r. i.d. Mitte) = Pivot Jetzt möchten wir den Zustand erzielen, dass alle Zahlen links vom Pivot kleiner als Pivot sind und umgekehrt; die Zahlen untereinander werden noch nicht sortiert Dazu suchen wir von links die erste Zahl, die größer ist als Pivot und gleichzeitig von rechts die erste Zahl, die kleiner ist als Pivot L R Wir tauschen die 2 Zahlen L und R Nach jedem Tauschen wird L inkrementiert und L dekrementiert 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 17

18 Quick Sort # L Mit der Suche setzen wir fort, anfangend mit dem rechten Nachbar der links gefundenen Zahl und mit dem linken Nachbar der rechts gefunden Zahl wir gehen aber nie weiter als bis zum Pivot sollte das Pivot-Element betroffen werden, dann wandert er mit Dies machen wir, solange sich die zu prüfenden Zahlen nicht begegnen R 6 25 L 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 18 R R L 18 wird mit sich selbst getauscht, danach R<L => keine weitere Suche nach Tauschkandidaten

19 Quick Sort # Wenn alle Zahlen links vom Pivot kleiner als Pivot und alle Zahlen rechts vom Pivot größer als Pivot sind, wird in entsprechenden Teilen des Arrays Quick-Sort rekursiv ausgeführt: Quick sort erneut rekursiv Folgendes muss noch genau überlegt werden: Kondition für Ende des Suchens/Tauschens Abschlussbedingungen für die rekursiven Aufrufe Analysieren Sie die Beispielprogramme dazu! Quick sort erneut rekursiv 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 19

20 Die Details: Quick Sort #4 Abschlussbedingung bei der Suche nach Tauschkandidaten: L>R Bei der Grobsortierung des Arrays muss nicht unbedingt gelten, dass - die Elemente links vom Pivot < als Pivot und - die Elemente rechts vom Pivot > als Pivot sein müssen Günstiger: Wir teilen das Array in 2 Teile, wobei alle Elemente im linken Teil < alle Elemente in rechten Teil wobei es auf die Lage des Pivot-Elementes nicht ankommt. Das Pivot-Element kann - am Rande der neuen Aufteilung sein - in der neuen Aufteilung enthalten sein, aber nicht am Rande - gar nicht in der neuen Aufteilung enthalten sein Die Grenzwerte von rekursiven Aufruf linker Array-Teil: linker Rand bis letzte Position der rechten Zeigers R Die Grenzwerte von rekursiven Aufruf rechter Array-Teil: letzte Position der linken Zeigers R bis rechter Rand Folglich: Abschlussbedingungen für die rekursiven Aufrufe Rekursion linker Teil: nur wenn linker Rand < letzte Position der rechten Zeigers R Rekursion rechter Teil: nur wenn letzte Position der linken Zeigers R < rechter Rand 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 20

21 Quick Sort #5 Fortsetzung unseres Beispiels: 2. Instanz linker Teil Instanz rechter Teil des in der 2. Instanz bearbeiteteten linker Teils L R R L R R L R L 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 21

22 Quick Sort #6 Fortsetzung unseres Beispiels: 2. Instanz rechter Teil L L R Instanz linker Teil des in der 2. Instanz bearbeiteteten rechten Teils 20 mit sich selbst tauschen L R R R L R L 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 22

23 Quick Sort #7 Fortsetzung unseres Beispiels: Ablaufdiagramm main() quick(0,6) quick(0,2) L L R L R quick(1,2) R L R quick(4,6) L R quick(4,5) rekursiver Abschluss 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 23

24 Quick Sort #8 Eigenschaften: i.d.r. sehr schnell (sehr kurze innere Schleifen) kann leider instabil sein verbraucht wenig Speicherplatz es gibt mehrere Varianten des Algorithmusses Aufwand: average case: O(N log N) wenn ca. gleich viele Zahlen kleiner und größer als das Pivot sind worst case: O(N 2 ) wenn das Pivot das größte (kleinste) Element ist, und das noch bei ca. allen Rekursionen 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 24

25 Shellsort Sortieren durch Einfügen mit abnehmender Schrittweite: Shell = Hülle, Oberfläche Shell sortiert Elemente, die in ausgewählter Entfernung auseinander liegen die Entfernungen (Abstände, Schrittweite) verringern sich mit dem Fortschritt des Verfahrens gern genommene Abstandsfolgen: { i 2 } = 0 { 1,2,4,8,... } a i= 1 = 3an + 1; n > 0, 0 = n+ a 1... { 1,4,13,40,121,... } D.L.Shell (1959) Knuth es wird mit dem größten Abstand begonnen, der in unseren Datenbestand noch hereinpaßt zum eigentlichen Sortieren der ausgewählten Elemente wird ein herkömmliches Sortierverfahren eingesetzt gern genommenen Sortierverfahren: Insertion-Sort (sehr schnell bei vorsortierten Zahlen), Bubble-Sort mit Merkern, schnelle Verfahren 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 25

26 Shellsort - Beispiel 1. alle Elemente, die 4 Positionen auseinander liegen, werden zusammengefasst und sortiert 2. alle Elemente, die 2 Positionen auseinander liegen, werden zusammengefasst und sortiert 3. alle Elemente werden zusammengefasst und sortiert Ausgangsfolge: 4 sortiert sortiert: sortiert: Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 26

27 Shellsort:grafische Darstellung mit Spalten Ausgangsfolge: 1 Sortierung fertig Sortierung Sortierung Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 27

28 Dreiband-Mischen Band Zerlegen = Phase 1 Band Durchlauf } Mischen = Phase 2}ein Band Band 0 Band 1 Band Zerlegen } Mischen Band usw Band Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 28 Abb. 41 c

29 Einphasen-Mischen (ausgeglichenes Mischen) Band Band Band Band Band Band Band Band 4 leer 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 29 Abb. 41 d

30 Natürliches Mischen#1 Definition: Lauf: innerhalb des Laufes gilt: a k <= a k+1 am linken Ende eines Laufes gilt: a i-1 > a i am rechten Ende eines Laufes gilt: a j > a j+1 a i-1 a k+1 a k a j a i a j+1 Lauf 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 30 Abb. 41 e

31 Natürliches Mischen#2 Vorgehensweise: 1. Teilfolgen von Band 0 auf Band 1 und 2 verteilen 2. entsprechende Teilfolgen von Band 1 und Band 2 mischen und auf Band 0 schreiben 3. dann mit 1 weiter, solange, bis auf Band 0 die sortierte Folge steht. a a a c c c c Lauf 1 Lauf 2 Lauf n c b b b Verteilphase Mischphase 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 31 Abb. 41f

32 Natürliches Mischen#3 Band verteilen Band Band2 Band0 Band1 Band mischen verteilen mischen Band verteilen / mischen Band Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 32

33 Mehrphasen-Mischen (Sortieren) Regeln: ist die Anzahl der benötigten Bänder gleich n es werden Laufe gemischt ist ein Band erschöpft, so wird es zum neuen Zielband Band n =Anzahl vorhandener Läufe je Band =Anzahl vorhandener Läufe je Band =Anzahl vorhandener Läufe je Band =Anzahl vorhandener Läufe je Band =Anzahl vorhandener Läufe je Band =Anzahl vorhandener Läufe je Band 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 33 Abb. 41h

34 Band Anzahl Läufe Leer (Zielband) Leer (Zielband) Leer (Zielband) Leer (Zielband) Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 34

35 Programm-Lauftzeit-Abschätzungen Problem: Mehrere Algorithmen zur Lösung einer Aufgabe verfügbar: was nehmen? Unser Programm: wozu? Einmalig, Schnellschuß einfachster Algorithmus Einsatz in der Produktion, jahrelang, mit vielen Daten Untersuchung der Alternativen Kriterien: Einfachheit, Verständlichkeit, gute Dokumentation benötigte Rechenzeit benötigter Hauptspeicherplatz benötigte Plattenzugriffe benötigte Datentransfer im Netzwerk Möglichkeiten zur Bestimmung der Rechenzeit: 1. Benchmarks 2. Analyse 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 35

36 Benchmarks Idee: Zeitkritische Programmteile isolieren Regel: 90% Laufzeit werden in 10% Programmcodes verbraucht Für die zeitkritischen Teile: besonders schnelle Sprachen oder Techniken einsetzen Laufzeitprofile ermitteln Extremfall: Laufzeit des nicht-zeitkritischen Programmteils wird auf 0 gesetzt: vorher: 100% Zeit, nachher = 90% Laufzeit des zeitkritischen Programmteils wird halbiert: vorher: 100% Zeit, nachher /2 = 55% 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 36

37 Analyse 2 Schritte: Wahl einer Maßzahl. Bsp: n Anzahl der zu sortierenden Zahlen Bestimmung der Zeitfunktion T = T(n,t) Unterschiedliche Funktionen für unterschiedliche n: T(10,t) T(100,t) T(10 9,t) Interessant asymptotisches Verhalten (worst case): limt ( n, t) O-Funktionen = obere Schranke für Programm-Laufzeit Ziel: kleineste obere Schranke finden n Aus der Mathe: konstante multiplikative Faktoren sind unwichtig (dort stecken die Maschinen und Compilerdetails) Terme niedriger Ordnung sind unwichtig. Bsp: O(2 n + n 3 ) = O(2 n ) Transitivität Bsp: f(n) = O(g(n)) g(n) = O(h(n)) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 37 f(n) = O(h(n))

38 Übliche Schranken Konstante O(1) logarithmisch O(log n) linear O(n) n log n O(n log n) quadratisch O(n 2 ) kubisch O(n 3 ) exponentiell O(2 n ) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 38

39 Anwendung auf Programmanweisungen #1 for-schleife for (i=0; i<n; i++) { //n mal // O(1) // Schleifenkörper: Inhalt unbekannt O(f(n)) } Verzweigung if (Boolscher Ausdruck) { // O(1) // if-zweig: O(f(n)) } else { // else-zweig: O(g(n)) } 3 * O(1) + n*o(f(n)) = O(n*f(n)) O(max(f(n), g(n)) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 39

40 Anwendung auf Programmanweisungen #2 Block { // Statements } O m ( Block) = ( ) i= 1 O Statement i while- und do-while-schleife while(bedindung) { // O(1) // Schleifenkörper: O(f(n)) } Worst case O(g(n)); O(g(n))*O(f(n)) = O (g(n)*f(n)) Schleifenkörper f(n): wir wissen nicht, was im Körper steht Worst case g(n): wir wissen nicht, wieviel mal die Schleife läuft 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 40

41 Beispiel 1 //Einheitsmatrix aufbauen for (i=0; i<n; i++) // for (j=0; j<n; j++) // a[i][j]=0; // for (i=0; i<n; i++) // a[i][i]=1; // n-mal n-mal O(1) O(n) n-mal O(1) O(n) O(n 2 ) T(n) = O(n 2 ) + O(n) = O(n 2 ) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 41

42 Beispiel 2 for (i=0; i<n-2; i++) { n-2 - mal small = i; // for (j=i+1;j<=n-1;j++)// n-i-1 - mal if (a[j]<a[small])// small = j; // O(1) max(o(1),0) temp = a[small]; // a[small] = a[i]; // a[i] = temp; // } O(1) O(n-i-1) =O(n) O(1) O(1) O(1) O(n) T(n) = (n-2)*o(n) = O(n 2 ) - O(n) = O(n 2 ) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 42

43 Sortieraufwand#1 Voraussetzungen: 1. Wirtschaftlicher Einsatz des Speicherraumes 2. Zeitaufwand Zeitaufwand: Effizienz gegeben durch: C... Anzahl der Schlüsselvergleiche (compare); C=f(n) M... Anzahl der Elementumstellungen (move); M=g(n) (n...anzahl der zu sortierenden Elemente) gute Methoden: C = O(n log 2 (n)) schlechtere Methoden C = O(n 2 ) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 43

44 Sortieraufwand#2 C min C avrg C max M min M avrg M max Insertionsort n-1 (n 2 +n-2)/4 (n 2 +n)/2-1 2(n-1) n 2 +9n-10 (n 2 +3n-4)/4 Selectionsort (n 2 +n)/2 3(n-1) n(ln(n) ) n 2 /4+3(n-1) Bubblesort (n 2 +n)/2 0 3(n 2 -n)/4 (n 2 -n)/2 Shellsort C + M ~ n 1.2 ) Heapsort C max + M max ~ n log 2 (n) Mergesort C max + M max ~ n log 2 (n) Quicksort n log 2 (n) (log 2 (n))/6 Einphasen-Mischen C<<M n log 2 (n) 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 44

45 Suchen 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 45

46 Sequentielle Suche enthalten? z.b. von links suchen, solange - gefunden oder - Array-Ende erreicht (das gesuchte Element nicht enthalten) die Elemente müssen nicht vorher sortiert werde 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 46

47 Binäre Suche enthalten? mitte Prinzip: divide et impera = (elm[linkerrand}+elm[rechterrand])/2 Die Zahlen müssen vorher sortiert werden Funktionsweise: - Die gesuchte Zahl < Mitte? => dann links von der Mitte suchen - Die gesuchte Zahl > Mitte? => dann rechts von der Mitte suchen - Die gesuchte Zahl = Mitte? => gefunden!!! Iterativ oder rekursiv weiter machen, bis 1-Element-Feld 1-Element-Feld geprüft und immer noch nicht gefunden? => => dann ist die Zahl nicht enthalten 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 47

48 Suche nach: 0 h Suche in Strings u h u l str im string: j 0 a 1 h 2 u 3 h 4 u 5 h 6 u l 7 muster i Funktionsweise: i erhöht sich, sobald muster[i] = str[j] dann werden beiden Zeiger i und j inkrementiert und die Übereinstimmung entsprechender Zeichen geprüft Bei der ersten Ungleichheit: j=0, i geht zurück und zeigt auf den rechten Nachbar vom Zeichen, bei dem die Übereinstimmung began Varianten: nach dem 1. Auftreten, nach allen Sunstrings suchen, etc Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 48

Ü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

(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

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

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

Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1)

Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1) Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 10: Komplexität von Algorithmen und Sortierverfahren Prof. Dr. David Sabel Lehr- und Forschungseinheit

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

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

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

Einführung in die Informatik I Kapitel II.3: Sortieren

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

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

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

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

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

Algorithmen und Datenstrukturen 12

Algorithmen und Datenstrukturen 12 12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort

Mehr

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren 2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Selection-Sort Idee: Suche kleinstes

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

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci

Mehr

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine

Mehr

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind. Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort

Mehr

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN

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

Ü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

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise

Mehr

Sortieralgorithmen. Selection Sort

Sortieralgorithmen. Selection Sort intuitivster Suchalgorithmus Sortieralgorithmen Selection Sort In jedem Schritt wird das kleinste Element im noch unsortierten Array gesucht und ans Ende des bisher sortierten Teilarrays gehangen 3 1 4

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

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

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

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

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] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

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

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

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

Kap. 3: Sortieren (3)

Kap. 3: Sortieren (3) Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 5 Asymptotische Laufzeitkomplexität Definition Regeln Beispiele Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger

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

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

Algorithmen und Datenstrukturen 1-3. Seminar -

Algorithmen und Datenstrukturen 1-3. Seminar - Algorithmen und Datenstrukturen 1-3. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline Spezielle Listen: Stacks, Queues Sortierverfahren 3. Übungsserie Wiederholung:

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

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 1 (Sortieralgorithmus): Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 3 (27.4.2014) O-Notation, Asymptotische Analyse, Sortieren III Algorithmen und Komplexität Selection Sort Algorithmus SelectionSort (informell):

Mehr

Elementare Sortierverfahren

Elementare Sortierverfahren Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1

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

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

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50 Heapsort Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen 27.6.2007 / 50 Heapsort - Wiederholung Definition Array A[..n] mit Einträgen aus (U,

Mehr

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Algorithmus Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-5/dsal/ 2 7.

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 5 Asymptotische Laufzeitkomplexität Definition Regeln Beispiele Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger

Mehr

Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 3: Sortierverfahren Skript zur Vorlesung Algorithmen und Datenstrukturen Sommersemester

Mehr

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.

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

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

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014) Asymptotische Analyse, Sortieren IV Algorithmen und Komplexität Erfahrungen 1. Übung C++ / Java sind komplett ungewohnt Struktur

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

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

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

Interne Sortierverfahren

Interne Sortierverfahren Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm

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

Mathematik AG. Geschickt gesucht ist halb gefunden: Suchen und Sortieren mit Mathe

Mathematik AG. Geschickt gesucht ist halb gefunden: Suchen und Sortieren mit Mathe Mathematik AG Geschickt gesucht ist halb gefunden: Suchen und Sortieren mit Mathe Habe ich die 7? 4 5 1 3 8 6 1 2 7 JA! Habe ich die 7? 4 5 1 3 8 6 1 2 3 NEIN! Unser Problem JA 4 5 1 3 8 6 1 2 7 NEIN 4

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

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009 Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 4. VO DAP2 SS 2009 23. April 2009 1 Überblick Einführung in das Sortierproblem Insertion-Sort

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 2 (23.4.2018) Sortieren II, Asymptotische Analyse, O-Notation Algorithmen und Komplexität Laufzeit Zeitmessung SelectionSort n 2 Laufzeit/n

Mehr

Stabiles Sortieren. Dieses Prinzip lässt sich natürlich auf beliebiege andere Zahlensystem oder auch komplett anders gestaltete Mengen übertragen.

Stabiles Sortieren. Dieses Prinzip lässt sich natürlich auf beliebiege andere Zahlensystem oder auch komplett anders gestaltete Mengen übertragen. Prof. Thomas Richter 3. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 27.04.2017 Stabiles

Mehr

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen

Mehr

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n 6. Sortieren Umordnen von Objekten a in eine Folge ai,..., ai n, so daß bezgl. einer Ordnung gilt: a a, j < n Begriffe: ij i j + ) Stabilität : Ein Sortierverfahren heißt stabil, falls die relative Reihenfolge

Mehr

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!! Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2 Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen

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

Ü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

Algorithmik Kap. 2: Laufzeit von Algorithmen

Algorithmik Kap. 2: Laufzeit von Algorithmen 1. Motivation 1.1 Fallstudie: Sortieralgorithmen 1.2 Fallstudie: Selektionsalgorithmen 2. Laufzeit von Algorithmen 2.1 Grundlagen 2.2 3. Paradigmen des Algorithmenentwurfs 3.1 Dynamisches Programmieren

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Am Freitag, 9. Juni 2006, erfolgt in der Vorlesung eine Zusammenfassung der Vorlesungsinhalte als Vorbereitung auf die

Mehr

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (Schreibtischtest, Algorithmenanalyse) Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

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

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

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures 2 Sorting WS2017 B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute of Pervasive Computing, JKU Linz) SORTIEREN Sortierproblem Gegeben: Folge von

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Wintersemester 2013/2014 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 17 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 08.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

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

Mergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi.

Mergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi. Sortierverfahren Mergesort Das Sortierverfahren Mergesort erzeugt eine sortierte Folge durch Verschmelzen (engl.: to merge) sortierter Teilstücke. Mit einer Zeitkomplexität von (n log(n)) ist das Verfahren

Mehr