Sortieren I - Bubblesort -

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

Klassen - Verkettete Liste -
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Zusammenfassung der Vorwoche
Kapitel 7. Sortier-Algorithmen
Kapitel 5. Stacks und Queues
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Gliederung Motivation / Grundlagen Sortierverfahren
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Motivation Richard Göbel.
SWITCH - Anweisung.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Felder sortieren. Aufgabe: Die Zahlen eines Feldes sollen der Größe (zuerst die kleinste Zahl) nach sortiert werden.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
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.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 9 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Katja Losemann Chris Schwiegelshohn
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Informatikunterricht mit Java
Kapitel 2: Datenstrukturen
Stacks Referat im Fach Basisinformationstechnologien von Venelina Koleva.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Sortieralgorithmen Sortieren von Arrays.
Effiziente Algorithmen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Programmieren in C Sortieren, Suchen
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Übung5 Prüft, ob sich folgende Segmente schneiden: –P1(1/7) P2(3/1)
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
 Am Ende der letzten Stunde hatten wir über die Grenzen unserer Automaten-Modell gesprochen. Dr. Lars Ettelt2  Tipp: Parkhaus.  Einfahrt erst wenn.
Tutorium Software-Engineering SS14 Florian Manghofer.
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
 Präsentation transkript:

Sortieren I - Bubblesort - void bubblesort( int n, int daten[]) { int i, k, t; for( i = n-1; i > 0; i--) for( k = 0; k < i; k++) if( daten[k] > daten[k+1]) t = daten[k]; daten[k] = daten[k+1]; daten[k+1] = t; } Programmierung 2 FH Bingen

Sortieren II - Selectionsort - void selectionsort( int n, int daten[]) { int i, k, t, min; for( i = 0; i < n-1; i++) min = i; for( k = i+1; k < n; k++) if( daten[k] < daten[min]) min = k; } t = daten[min]; daten[min] = daten[i]; daten[i] = t; Programmierung 2 FH Bingen

Sortieren III - Insertionsort- void insertionsort( int n, int daten[]) { int i, j, v; for( i = 1; i < n; i++) v = daten[i]; for( j = i; j>0 && (daten[j-1] > v); j--) daten[j] = daten[j-1]; daten[j] = v; } Programmierung 2 FH Bingen

Sortieren IV-1 - Shellsort- void insertion_h_sort ( int n, int daten[], int h) { int i, j, v; for( i = h; i < n; i++) v = daten[i]; for( j = i; (j >= h) && (daten[j-h] > v); j -= h) daten[j] = daten[j-h]; daten[j] = v; } Programmierung 2 FH Bingen

Sortieren IV- 2 - Shellsort- void shellsort( int n, int daten[]) { int i, j, h, v; for( h = 1; h <= n/9; h = 3*h+1) ; for( ; h > 0; h /= 3) insertion_h_sort(n, daten, h); } Programmierung 2 FH Bingen

Sortieren IV - 3 - Shellsort- void shellsort( int n, int daten[]) { int i, j, h, v; for( h = 1; h <= n/9; h = 3*h+1) ; for( ; h > 0; h /= 3) for( i = h; i < n; i++) v = daten[i]; for( j = i; (j >= h) && (daten[j-h] > v); j -= h) daten[j] = daten[j-h]; daten[j] = v; } Programmierung 2 FH Bingen

Sortieren V - 1 - Quicksort - void aufteilung ( int links, int rechts, int daten[]) { int median, i, j, t; median = daten[rechts]; i = links-1; j = rechts; for( ; ;) while( daten[++i] < median); while( daten[--j] > median); if( i >= j) break; t = daten[i]; daten[i] = daten[j]; daten[j] = t; } daten[rechts] = daten[i]; daten[i] = median; Programmierung 2 FH Bingen

Sortieren V - 2 - Quicksort - void quicksort( int links, int rechts, int daten[]) { int median, i, j, t; if( rechts > links) median = daten[rechts]; i = links-1; j = rechts; for( ; ;) while( daten[++i] < median) ; while( daten[--j] > median) if( i >= j) break; t = daten[i]; daten[i] = daten[j]; daten[j] = t; } daten[rechts] = daten[i]; daten[i] = median /* i ist der Index des Median */ quicksort( links, i-1, daten); quicksort( i+1, rechts, daten); Programmierung 2 FH Bingen

Sortieren VI - 1 - Heapsort - void adjustheap( int n, int daten[], int k) { int j, v; v = daten[k]; while( k < n/2) j = 2*k+1; if( (j < n-1) && (daten[j] < daten[j+1])) j++; if( v >= daten[j]) break; daten[k] = daten[j]; k = j; } daten[k] = v; Programmierung 2 FH Bingen

Sortieren VI - 2 - Heapsort - void heapsort( int n, int daten[]) { int k, t; for( k = n/2; k > 0;) adjustheap( n, daten, --k); while( --n > 0) t = daten[0]; daten[0] = daten[n]; daten[n] = t; adjustheap( n, daten, 0); } Programmierung 2 FH Bingen

Übungsblatt 2 1.Aufgabe: Eine Aufgabe für E-TechinkerInnen: Ein Automat (exakt: Mealy-Automat) liest nicht negative, ganze Zahlen nacheinander ein und gibt als Ergebnis auch wieder eine nicht-negative, ganze Zahl aus, deren Wert sich aus der Eingabe und einem inneren Zustand des Automaten berechnet. Dieser Zustand ist ebenfalls durch eine nicht-negative Zahl ganze Zahl gegeben. Der Automat stoppt, wenn er einen Zustand ein zweites Mal annimmt. Die jeweils erreichten Zustände werden in einem Feld gespeichert. Der Automat vollzieht die folgenden Schritte: Ausgabe des aktuellen Zustands, Einlesen der nächsten Eingabe im Zustand z, Berechnen des neuen Zustands aus (z+x)%11, Berechnen der Ausgabe als z+x, Überprüfen des Abbruchkriteriums. Realisieren Sie den Automaten als Klasse, die mit einem Startzustand initialisiert wird und die solange eine Eingabe fordert, bis der Automat stoppt. Die angenommen Zustände sollen in einem Feld gespeichert werden. 2. Aufgabe: Variation verketteter Listen: Definieren Sie eine Klasse Doppelt-verkettete Liste ganzer Zahlen, also eine Liste, in der man vor- und zurücklaufen kann. An den Enden ist natürlich nur eine Richtung möglich. Implementieren Sie die üblichen Listenfunktionen: Einfügen eines Elements, Entfernen eines Elements, Navigieren in der Liste bei vorgegebener Richtung, Drucken der Liste. Wie würden Sie das Sortieren der Liste realisieren? Programmierung 2 FH Bingen

Übungsblatt 3 1.Aufgabe: Anwendung verketteter Listen Die Klasse zur Implementierung einer Liste (einfach oder doppelt-verkettet) soll zur Implementierung eines Stacks (Keller-Speichers, LIFO - last in, first out) verwendet werden. Entwickeln Sie die neuen Methoden push (item) und pop(). push(item) speichert ein Element auf dem Stack (d.h., am Anfang des Stacks); pop() löscht das zuletzt gespeicherte Element vom Stack und liefert es als Funktionswert zurück. Es gilt also: pop (push(item)) == item; push (pop()) lässt den nicht-leeren Stack unverändert. 2. Aufgabe Anwendung eines Stacks Benutzen Sie den Stack, um zu evaluieren, ob ein vorgelegter String ein korrektes "Klammergebirge" darstellt. Beispiel: ({[](({([])})){([])}{}}) Anmerkung: Es genügt hier nicht zu zählen, ob die Zahl der öffnenden und schliessenden Klammern übereinstimmt. Programmierung 2 FH Bingen