Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Sortieren I - Bubblesort -

Ähnliche Präsentationen


Präsentation zum Thema: "Sortieren I - Bubblesort -"—  Präsentation transkript:

1 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 FH Bingen

2 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 FH Bingen

3 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 FH Bingen

4 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 FH Bingen

5 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 FH Bingen

6 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 FH Bingen

7 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 FH Bingen

8 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 FH Bingen

9 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 FH Bingen

10 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 FH Bingen

11 Ü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 FH Bingen

12 Ü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 FH Bingen


Herunterladen ppt "Sortieren I - Bubblesort -"

Ähnliche Präsentationen


Google-Anzeigen