Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Sortieren I - Bubblesort - Programmierung 2 FH Bingen void bubblesort( int n, int daten[]) { int i, k, t; for( i = n-1; i > 0; i--) { for( k = 0; k < i;"—  Präsentation transkript:

1 Sortieren I - Bubblesort - Programmierung 2 FH Bingen 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; }

2 Sortieren II - Selectionsort - Programmierung 2 FH Bingen 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; }

3 Sortieren III - Insertionsort- Programmierung 2 FH Bingen 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; }

4 Sortieren IV-1 - Shellsort- Programmierung 2 FH Bingen 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; }

5 Sortieren IV- 2 - Shellsort- Programmierung 2 FH Bingen 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); }

6 Sortieren IV Shellsort- Programmierung 2 FH Bingen 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; }

7 Sortieren V Quicksort - Programmierung 2 FH Bingen 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; }

8 Sortieren V Quicksort - Programmierung 2 FH Bingen 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); }

9 Sortieren VI Heapsort - Programmierung 2 FH Bingen 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; }

10 Sortieren VI Heapsort - Programmierung 2 FH Bingen 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); }

11 Übungsblatt 2 Programmierung 2 FH Bingen 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?

12 Übungsblatt 3 Programmierung 2 FH Bingen 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. AufgabeAnwendung 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.


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

Ähnliche Präsentationen


Google-Anzeigen