Suchen und Sortieren Flashcards
Sequentielle Suche
Indexpositionen des Feldes werden der Reihe nach betrachtet.
Werte werden mit dem Gesuchten verglichen.
Sequentielle Suche Voraussetzung
keine, Feld kann unsortiert sein
Sequentielle Suche Laufzeitanalyse
bester Fall: 1
schlechtester Fall: n
Durchschnitt: (n + 1) / 2
Sequentielle Suche Java Quelltext
public class SeqSearch { public static final int NO_KEY = -1;
public static int search(int[] array, int key) { for (int i = 0; i < array.length; i++) { if (array[i] == key) { return i; } } return NO_KEY; } }
Binäre Suche
In jedem Schritt wird der Wert in der Mitte des betrachteten Feldbereichs mit dem gesuchten Wert verglichen. Falls diese nicht übereinstimmen, wird die Suche in der linken bzw. rechten Hälfte des Feldbereichs fortgesetzt – abhängig davon, in welcher Hälfte sich der gesuchte Wert aufgrund der Sortierung des Felds befinden muss.
Binäre Suche Voraussetzung
Feld muss aufsteigend sortiert sein
Binäre Suche Laufzeitanalyse
bester Fall: 1
schlechtester Fall: log2 (n)
Durchschnitt: log2 (n)
Binäre Suche Java Quelltext
public class BinarySearch { public static final int NO_KEY = -1;
public static int search(int[] array, int key) { int u = 0, o = array.length - 1; while (u <= o) { int m = (u + o) / 2; if (array[m] == key) { return m; } else if (key < array[m]) { o = m - 1; } else { u = m + 1; } } return NO_KEY; } }
Vergleich Binäre Suche vs. Sequentielle Suche
Verfahren 10 10^2 10^3 10^4 sequentiell (n/2) ≈ 5 ≈ 50 ≈ 500 ≈ 5.000 binär (log2n) ≈ 3,3 ≈ 6,6 ≈ 10,0 ≈ 13,3
InsertionSort
Array imaginär in zwei Felder aufgeteilt:
- sortiert
- unsortiert
erstes Element des unsortierten Feldes wird in die richtige Stelle in dem sortierten Feld eingefügt
InsertionSort Beispiel:
1 | 5 8 3 9 2
1 5 | 8 3 9 2
1 5 8 | 3 9 2
1 3 5 8 | 9 2
1 3 5 8 9 | 2
1 2 3 5 8 9
SelectionSort
Array imaginär in zwei Felder aufgeteilt:
- sortiert
- unsortiert
kleinstes Element des unsortierten Feldes an das sortierte Feld dranhängen
SelectionSort Beispiel:
1 | 5 8 3 9 2
1 | 5 8 3 9 2
1 2 | 5 8 3 9
1 2 3 | 5 8 9
1 2 3 5 | 8 9
1 2 3 5 8 | 9
1 2 3 5 8 9
BubbleSort
- Die nebeneinanderliegenden Werte werden miteinander verglichen und gegeben Falls getauscht
- Das wird solang wiederholt, bis man am Ende des Feldes angekommen ist
- Das ganze wiederholt man solange, bis in so einem Durchgang nichts mehr getauscht wurde
BubbleSort Beispiel:
1 5 8 3 9 2
1 5 3 8 2 9
1 3 5 2 8 9
1 3 2 5 8 9
1 2 3 5 8 9