JAVA - Suchen - Sortieren

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

Abschnitt 19: Sortierverfahren

Interne Sortierverfahren

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

3.2. Divide-and-Conquer-Methoden

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Algorithmen und Datenstrukturen 12

Grundlegende Sortieralgorithmen

Algorithmen und Datenstrukturen

Kapitel 6 Elementare Sortieralgorithmen

Algorithmen und Datenstrukturen 1

Grundlegende Sortieralgorithmen

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

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

Übung Datenstrukturen. Sortieren

Suchen und Sortieren

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

Grundlagen der Informatik

Grundlegende Sortieralgorithmen

Grundlagen: Algorithmen und Datenstrukturen

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

Übung: Algorithmen und Datenstrukturen SS 2007

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Tutoraufgabe 1 (Sortieralgorithmus):

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

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Übung Algorithmen I

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

Informatik II Übung 10. Benjamin Hepp 10 May 2017

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

7. Sortieren Lernziele. 7. Sortieren

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

Programmieren I. Kapitel 7. Sortieren und Suchen

Elementare Sortierverfahren

Grundlagen der Programmierung

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Algorithmen & Komplexität

Informatik II Übung 10. Pascal Schärli

Algorithms & Data Structures 2

Ü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:

Sortieren durch Mischen (Mergesort; John von Neumann 1945)

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

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

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07

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

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

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

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

Kapitel 3: Sortierverfahren Gliederung

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

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Einführung in die Informatik 2

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

Programmierung mit C Algorithmen

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.

Suchen und Sortieren (Die klassischen Algorithmen)

Grundlagen der Programmierung 2. Sortierverfahren

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

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

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

3. Hausübung Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

4. Sortieren 4.1 Vorbemerkungen

(08 - Einfache Sortierverfahren)

Abgabe: (vor der Vorlesung) Aufgabe 3.1 (P) Master-Theorem

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Sortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004

Parallele Algorithmen

Aufgabenblatt: Arrays

Transkript:

Ü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 1 Folie 2

binarysearch ein internes Suchverfahren Suchen in einem aufsteigend oder absteigend sortierten linearen Feld durch fortgesetztes Halbieren des Bereichs, indem sich das Element noch befinden kann: A sei ein aufsteigend sortiertes Feld: A[1] <= A[2] <=... <= A[n] ; n >=1 gesucht: Element k Suche: k = A[n/2] oder k = A[(n+1)/2] Suche beendet k < A[n/2] Suche auf Teilfeld a[1]...a[(n/2-1] rekursiv anwenden k > A[n/2] Suche auf Teilfeld A[(n/2+1]... A[n] rekursiv anw. Beispiel: 3 7 12 15 17 30 32 44 gesuchte Zahl: 12 2. 3. 1. Vergleichsnummer > = < Ergebnis des Vergleichs Laufzeit: O(log 2 n) (hier: O (log 2 8 ) = 3) Übungen Informatik 1 Folie 3

binarysearch rekursiv static int binaeresucherekursiv (int zahl, int low, int high) { System.out.println("BinäreSuche-Demo: "); } if (low <= high) { int mitte = (low + high) / 2; if (feld[mitte] == zahl) { return mitte; } else { if (feld[mitte] > zahl) { // links weiter return binaeresucherekursiv (zahl, low, mitte-1); } else { return binaeresucherekursiv (zahl, mitte+1, high); } } } else { return -1; } // nicht gefunden Übungen Informatik 1 Folie 4

Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik 1 Folie 5

mergesort Sortieren durch Mischen / Verschmelzen MergeSort ist ein Sortieralgorithmus, der ähnlich wie QuickSort nach dem Prinzip Teile und herrsche (engl. Divide and conquer) arbeitet. MergeSort betrachtet die zu sortierenden Daten als Liste und zerlegt sie in kleinere Listen, die jede für sich sortiert werden. Die sortierten kleinen Listen werden dann zu größeren Listen zusammengefügt (engl.: (to) merge), bis wieder eine jetzt sortierte Gesamtliste erreicht ist. Gegeben: Startliste c Hilfsmittel: Hilfsliste a, Hilfsliste b Phase 1 = Zerlegungsphase Verteilung des Inhalts von c auf a und b Phase 2 = Verschmelzungsphase Verschmelze a und b und schreibe das Ergebnis auf c i.d.r braucht die Sortierung log 2 (n) Durchläufe Übungen Informatik 1 Folie 6

mergesort Sortieren durch Mischen / Verschmelzen Anfangsfolge c: 28 58 23 17 91 11 80 54 1. Durchlauf: abwechselndes Verteilen auf a und b: a: 28 23 91 80 b: 58 17 11 54 Verschmelzen von a und b auf c 28 58 17 23 11 91 54 80 2. Durchlauf: abwechselndes Verteilen von Folgen d. Länge 2 auf a und b: a: 28 58 11 91 b: 17 23 54 80 Verschmelzen von a und b auf c 17 23 28 58 11 54 80 91 3. Durchlauf abwechselndes Verteilen von Folgen d. Länge 2 auf a und b: a: 17 23 28 58 b: 11 54 80 91 Verschmelzen von a und b auf c 11 17 23 28 54 58 80 91 c: ist nun sortiert O (log 2 (n) ) O ( log 2 (8) ) = 3 Übungen Informatik 1 Folie 7

Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik 1 Folie 8

bubblesort einfaches Verfahren zum Sortieren eines linearen Feldes: 2 benachbarte Elemente werden vertauscht, wenn sie nicht in der korrekten Reihenfolge stehen. Beispiel: Folge 54 80 11 91 17 23 58 28 28 91 91 91 91 58 28 80 80 80 23 58 28 58 58 17 23 58 28 54 91 17 23 54 28 11 80 17 23 23 80 11 54 17 17 54 54 11 11 11 sollte nur für kleine Felder (n<30) verwendet werden, da seine Laufzeit quadratisch von n abhängt. O(n 2 ) (hier: O(8 2 ) = 64) Schnellere Sortierverfahren: Quicksort und Heapsort Übungen Informatik 1 Folie 9

Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik 1 Folie 10

Quicksort = schnelles, internes Sortierverfahren: - A: Array mit den Indexgrenzen m, n mit m<n A[m... n] - x: beliebiges Feldelement 1. A wird in 2 Teilfelder zerlegt : A[m...k] und a[k+1...n] Bedingung: 1. Alle Werte in A [m...k] <= x m <=i <= k mit A[i]<=x 2. Alle Werte in A [k+1...n] >= x k+1 <=j <= n mit A[j]>=x linke und rechte Teil werden rekursiv analog umgeordnet Übungen Informatik 1 Folie 11

Kurzbeschreibung Quicksort sortiert eine Folge von N Elementen durch rekursives Teilen nach dem Divide-and-conquer-Prinzip. Es beruht auf dem Zerlegen der Folge in zwei Teile und dem anschließenden Sortieren der Teile unabhängig voneinander: Aus der Folge F wird zunächst ein Element als sogenanntes Pivotelement herausgegriffen. Dann wird die Folge in zwei Teilfolgen F1 und F2 geteilt (divide), wobei F1 alle Elemente enthält, die kleiner oder gleich K sind, und F2 alle größeren Elemente. Die Teilfolgen F1 und F2 werden rekursiv nach demselben Prinzip sortiert (conquer), dann werden die Ergebnisse wie folgt zusammengesetzt (merge). Zuerst die (sortierte) Teilfolge F1, dann das Pivotelement K und schließlich die (sortierte) Teilfolge F2. Quicksort benötigt im Durchschnitt ungefähr O(2n log n) Vergleiche. Übungen Informatik 1 Folie 12

Beispiel: 1. wähle ein beliebiges Element z.b. x=a[3]=23 2. suche von links nach rechts das erste Element größer 23 ( A[1]=28) 3. suche von rechts nach links das erste Element kleiner 23 ( A[6]=11) 4. vertausche A[1] und A[6] 28 11 58 58 23 23 17 17 91 91 11 28 80 80 54 54 5. suche von links ab i=2 nach rechts das erste Element größer 23 ( A[2]=58) 6. suche von rechts ab j=n-5 nach links das erste Element kleiner 23 ( A[4]=17) 7. vertausche A[2] und A[4] 11 17 23 58 91 28 80 54 8. Teilfelder 11 17 58 91 28 80 54 9. werden rekursiv nach der gleichen Methode sortiert Übungen Informatik 1 Folie 13

Weitere Beispiele: Algorithmen Übungen Informatik 1 Folie 14

Sortieren Links Sehr gute Seite zum Sortieren mit vielen Infos und leicht verständlich: http://www.oberstufeninformatik.de/info12/sortier/index.html Auch eine gute Seite zum Sortieren : http://www.pure.de/andreas/wi5/java/k2java.html Super Seite mit guten Erklärungen zu verschiedenen Algorithmen: http://www.animal.ahrgr.de/ http://www.net-lexikon.de http://www.sortieralgorithmen.de/ Übungen Informatik 1 Folie 15