Suchen und Sortieren.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

DNA-Array oder DNA-Chip
Softwareengineering Wie schnell ist ein Computerprogramm?
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Informatik II – Kapitel 11
Sortieren I - Bubblesort -
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
„Such-Algorithmen“ Zusammenfassung des Kapitels 11
Kapitel 6: Klassifizierung von Sortiertechniken
Suche in Texten (Stringsuche )
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 7. Sortier-Algorithmen
Kapitel 6. Suchverfahren
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Felder sortieren. Aufgabe: Die Zahlen eines Feldes sollen der Größe (zuerst die kleinste Zahl) nach sortiert werden.
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 9 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Sortierverfahren Susanne Freitag.
Diskrete Mathematik I Vorlesung 9b AVL-Baum, Algorithmen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Vortrag: Ingo Gensch, Mathias Reich am:
Bubbelsort und Quicksort Vortrag von Rolf Heitzenröder
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein…]
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Algorithmen Gruppe 4.
Sortieralgorithmen Sortieren von Arrays.
Sortieren und Suchen IFB 2002 Daniel Jonietz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Mergesort.
Komplexität von Algorithmen
Programmieren in C Sortieren, Suchen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Sortieralgorithmen Greedy Sortieren: Sortieren durch Auswahl, Einfügen und Austauschen Divide-and-Conquer-Sortieren: Quicksort und merge sort Foliensatz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Selection-Sort Insertion-Sort Bubble-Sort.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Algorithmen und Datenstrukturen
Mergesort.
Binärbäume.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Allgemeine Formulierung des Suchproblems
Bubblesort. Inhaltsverzeichnis Allgemeines Aufbau Prinzip Beispiel.
Algorithmen und Datenstrukturen
Das Problem des Handlungsreisenden
Sortieren interaktiv.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Laufzeitverhalten beim Sortieren
Sortieren interaktiv.
Wiederholung TexPoint fonts used in EMF.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
 Präsentation transkript:

Suchen und Sortieren

Suchen: Visuelle Darstellung 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Suchen: Visuelle Darstellung https://www.cs.usfca.edu/~galles/visualization/Search.html

Big O: Vergleich von Algorithmen 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Big O: Vergleich von Algorithmen Wann ist Algorithmus A besser als Algorithmus B? Algorithmus A verbraucht weniger Speicherplatz Algorithmus B ist schneller Oft verbrauchen schneller Algorithmen mehr Hauptspeicher! Folgerung: Optimierung der Laufzeit! Wie schnell ist ein Algorithmus? Best Case Worst Case Average Case

int linearSearch(int A[], int element) { 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Big O: Lineares Suchen int linearSearch(int A[], int element) { for (i=0; i<A.length; i++) { if (A[i] == elem) return i; } return false; Wann ist Algorithmus A besser als Algorithmus B? Algorithmus A verbraucht weniger Speicherplatz Algorithmus B ist schneller Oft verbrauchen schneller Algorithmen mehr Hauptspeicher! Folgerung: Optimierung der Laufzeit!

Suchen: Binäres Suchen Suche nach 16: 11 -9 -2 45

Suchen: Binäres vs sequentielles Suchen Gegeben: 1000 Schachteln mit sortieren Zahlen. Es wird eine bestimmte Zahl gesucht z. B. 345 Lineare Suche Binäre Suche Im Mittel (1+1000)/2 Suchschritte Im Mittel log21000 Suchschritte Im Mittel =(1+n)/2 Suchschritte Im Mittel log2n Suchschritte

Sortieren: Bubble Sort I 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Bubble Sort I Sortieren durch einfaches Vertauschen: - Vergleiche das erste und zweite Element: Tausche es falls nötig! - Vergleiche das zweite und dritte Element: Tausche es falls nötig! - Vergleiche das dritte und vierte Element: Tausche es falls nötig! - Mache die gleichen Schritte ab dem 2. Element!

Sortieren: Bubble Sort II 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Bubble Sort II -2 45 11 -9 -2 11 -9 45 -2 -9 11 45 -2 -9 11 45 -2 45 11 -9 -2 11 -9 45 -2 -9 11 45 -9 -2 11 45 -2 45 11 -9 -2 11 -9 45 -2 -9 11 45 -2 11 45 -9 -2 -9 11 45 -2 11 -9 45 1. 2. 3. 4.

Sortieren: Bubble Sort III 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Bubble Sort III Sortieren durch einfaches Vertauschen: Durchlauf durch die Arrayelemente for(step=0;step<n-1;++step) for(i=0;i<n-step-1;++i) { if (data[i]>data[i+1]) { temp=data[i]; data[i]=data[i+1]; data[i+1]=temp; } Vergleich zweier Elemente Vertauschen zweier Elemente

Sortieren: Insertion Sort I 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Insertion Sort I Sortieren durch Einfügen: - Füge das zweite Element vor/hinter dem ersten an die richtige Stelle ein - Füge das dritte Element an die richtige Stelle ein von den ersten zwei richtig sortierten Elementen ein - Füge das vierte Element an die richtige Stelle ein von den ersten drei richtig sortierten Elementen ein

Sortieren: Insertion Sort II 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Insertion Sort II 12 1 3 5 8 1. 3 1 12 5 8 2. 1 12 3 5 8 3. 1 5 3 12 8 4. 1 5 3 8 12 Ergebnis:

Sortieren: Selection Sort 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Selection Sort 35 30 65 60 20 20 30 65 60 35 20 65 30 60 35 20 35 30 60 65 20 30 65 60 35 20 65 30 60 35 20 35 30 60 65 20 35 30 60 65 1. 2. 3. 4.

Sortieren: Visuelle Darstellung I 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Visuelle Darstellung I 1. Sortieralgorithmus wählen https://visualgo.net/sorting

Sortieren: Visuelle Darstellung II 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Visuelle Darstellung II 2. Daten eingeben

Sortieren: Visuelle Darstellung III 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Visuelle Darstellung III 3. Sortieren

Sortieren: Quick Sort – Prinzip I 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Quick Sort – Prinzip I Anton, Britta, Carlo, ... wollen sich der Größe nach in einer Reihe aufstellen. Zuerst werden alle genau vermessen. Eine Person (z.B. die erste in der Reihe) wird als Vergleichsperson ausgewählt. Im vorliegenden Beispiel ist das Anton. Alle anderen ordnen sich links bzw. rechts von der Vergleichsperson ein, je nachdem, ob sie kleiner oder größer gleich als die Vergleichsperson sind.

7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Quick Sort – Prinzip II Anton bleibt jetzt auf seiner Position. Er nimmt nicht mehr an der Sortierung teil. Dasselbe Verfahren wird jetzt im linken und im rechten Bereich durchgeführt: Eine Person (z.B. die erste in der Reihe) wird wiederum als Vergleichsperson ausgewählt. Und so weiter ... http://www.inf-schule.de/grenzen/komplexitaet/sortieren/sortieralgorithmen/quicksort

7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Quick Sort – Beispiel http://www.inf-schule.de/grenzen/komplexitaet/sortieren/sortieralgorithmen/quicksort

Informationen zu Groß Oh: 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 7! = 1*2*3*4*5*6*7 2! = 1*2 1! = 1 0! = 1 Sortieren: Quick Sort Ebenso gut ist: http://www.w3resource.com/javascript-exercises/searching-and-sorting-algorithm/index.php Informationen zu Groß Oh: https://www.cs.usfca.edu/~galles/cs245S08/lecture/lecture11.pdf Graphische Darstellung von Quicksort: http://me.dt.in.th/page/Quicksort/