19
DVG1 - 12 - Sortierverfah ren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

Embed Size (px)

Citation preview

Page 1: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Sortierverfahren

Vortrag: Ingo Gensch, Mathias Reicham: 11.12.2000

Page 2: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Was sind Sortieralgorithmen Das Sortieren ist ein Verfahren zum Herstellen einer definierten

(geordneten) Sequenz von Objekten entsprechend einer Ordnung bzw. der Vorgang des Anordnens von Objekten zu einer definierten Sequenz entsprechend einer Ordnung

Zielsetzung: Vereinfachung des Findens von Objekten mit Hilfe einfacher

Suchverfahren

Page 3: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Wo braucht man Sortierverfahren? wenn große Datenmengen vorhanden sind und sortiert werden

sollen Wenn zu einer bereits bestehenden, sortierten Datenmenge

neue Elemente hinzugefügt werden müssen

Sortierte Datenbestände sind z.B.: Telefonbuch Register Kataloge usw.

Page 4: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Was sortieren wir? Elektronische Daten

Zahlen Zeichenketten Adressen Datenbänke usw.

Page 5: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Was sind gute Algorithmen?

Oder gibt es einen besten Sortieralgorithmus für alle Datensätze? Die Effektivität der Sortieralgorithmen ist abhängig von der Art

der bestehenden Daten vorsortierte Daten? Steht die Menge der zu sortierenden Daten im Verhältnis zum

Programmierumfang? Geschwindigkeit der Sortierung der Daten wichtig?

Page 6: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Geschwindigkeit der Sortierung Abhängig vom Sortierverfahren Abhängig von der Anzahl der arithmetischen Funktionen Das theoretisch schnellste Sortierverfahren:

Jeder Wert der Datenmenge muss mit jedem anderen Wert der Datenmenge verglichen werden

d.h. wenn n die Anzahl der Werte ist, dann hat das effizienteste Sortierprogramm genau n*(n-1) Vergleiche und maximal n Vertauschungen

Page 7: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Computer und Sortieren Sortieralgorithmen haben sich parallel zur Entwicklung der

Computer weiterentwickelt

Früher: Computer waren zu langsam, Technik noch nicht ausgereift. => Hauptaugenmerk auf neue/bessere Algorithmen

Gegenwart: Prozessorentwicklung boomt => Weniger Interesse an guten Algorithmen, da Prozessoren immer schneller werden

Zukunft: Maximale (physikal.) Prozessorgeschwindigkeit? => wieder bessere Algorithmen?

Page 8: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Prinzipien des Sortierens Vorsortierte Menge neuer Datensatz

Sortierprinzip: Vergleich und sofortiger Austausch (z.B. BubbleSort)

?

Page 9: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Sortierprinzip: Vergleich solange bis der neue Datensatz an der richtigen Stelle ist und dann wird erst der neue Datensatz eingefügt (z.B. InsertSort)

?

Page 10: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Arten von SortieralgorithmenEinfache

SortierverfahrenMittlere

SortierverfahrenHöhere

Sortierverfahren

RandomSort (zufälliges Verändern der Reihenfolge bis es stimmt)

InsertSort (Sortieren durch Einfügen)

QuickSort (Sortieren durch Zerlegen)

PermSort (Sortieren durch Permutation)

MergeSort (Sortieren durch Mischen)

BubbleSort (Sortieren durch Austauschen)

HeapSort (Sortieren im Baum)

Page 11: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

BubbleSort

Page 12: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Bubblesort (Theorie) Es gibt eine unsortierte Datenmenge der Größe n Man vergleicht das erste Feld mit dem Zweiten

wenn erstes Feld größer ist als das Zweite, dann Vertauschung der beiden Feldern

Man vergleicht die nächsten beiden Felder analog Wenn die letzten beiden Felder verglichen sind, Wiederholung

mit der Feldgröße (n-1) Wenn keine Vertauschungen dabei stattgefunden haben, ist die

Menge sortiert

Anzahl der maximalen Vergleiche und Vertauschungen: (n*(n-1))/2 + (n*(n-1))/2 = n^2-n

Page 13: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Quelltext von BubbleSort

for (int i = a.length-1; i>0;i--) { boolean getauscht = false; for (int j = 0; j<i; j++) {

if (a[j] > a[j+1]) {int h = a[j];a[j] = a[j+1];a[j+1] = h;getauscht = true;

} } if (!getauscht) return;}

Page 14: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

InsertSort

Page 15: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

InsertSort (Theorie) Vergleich der ersten beiden Werte kleinerer Wert wird sich gemerkt Der Wert wird mit dem Nächsten verglichen Am Ende der Datenmenge wird der gemerkte (kleinste) Wert an

die erste Stelle geschrieben Wiederholung mit der Feldgröße (n-1)

Anzahl der Vergleiche und Vertauschungen : (n*(n-1))/2 + n = (n^2+n)/2

Page 16: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Quelltext von InsertSort

int min_index; int anz = a.length-1; int minimum;for(int i=0;i<anz;i++) {

min_index = i;for(int j=min_index+1;j<anz; j++); {

if (a[j]<a[min_index]) min_index=j;}if min_index>i {

minimum=a[min_index];for (int j=min_index; j>i; j--) a[j]=a[j-1];a[i]=minimum;

}}

Page 17: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

QuickSort

Page 18: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Quicksort (Theorie) Prinzip: „Teile und herrsche!“ Aufteilung der Datenmenge in zwei beliebig große Blöcke

kleinere Werte auf eine Seite, größere auf die andere Seite vorsortieren

Jeden einzelnen Unterblock wiederum unterteilen Wenn Blockgröße auf 1 geschrumpft ist, ist die Menge sortiert

Anzahl der Vergleiche und Vertauschungen

Abhängig von den Werten : ca. n*log(n)

Page 19: DVG1 - 12 - Sortierverfahren Sortierverfahren Vortrag: Ingo Gensch, Mathias Reich am: 11.12.2000

DVG1 - 12 - Sortierverfahren

Struktogramm von QuickSort (rekursive Programmierung) Siehe Blatt