f1176da648097c7633996a3ec0a9a0b991abf939
BinaereSuche.md
| ... | ... | @@ -0,0 +1,63 @@ |
| 1 | +# Binäre Suche |
|
| 2 | + |
|
| 3 | +## Funktionsweise der binären Suche |
|
| 4 | + |
|
| 5 | +Die binäre Suche ist ein effizienter Algorithmus zum Auffinden eines Elements in einer **sortierten Liste**. |
|
| 6 | + |
|
| 7 | +## Voraussetzungen |
|
| 8 | +- Die Liste oder das Array **muss sortiert** sein. |
|
| 9 | +- Der Algorithmus vergleicht das gesuchte Element mit dem **mittleren Element** des aktuellen Suchbereichs. |
|
| 10 | + |
|
| 11 | +## Ablauf |
|
| 12 | +1. Bestimme die Mitte des Suchbereichs. |
|
| 13 | +2. Vergleiche das mittlere Element mit dem gesuchten Wert. |
|
| 14 | +3. Bei Gleichheit: Suche erfolgreich beendet. |
|
| 15 | +4. Ist der gesuchte Wert kleiner: Suche im linken Teil weiter. |
|
| 16 | +5. Ist der gesuchte Wert größer: Suche im rechten Teil weiter. |
|
| 17 | +6. Wiederhole, bis das Element gefunden ist oder der Suchbereich leer ist. |
|
| 18 | + |
|
| 19 | + |
|
| 20 | + |
|
| 21 | +## Code |
|
| 22 | + |
|
| 23 | +```java |
|
| 24 | +public class BinareSuche { |
|
| 25 | + public static int binareSuche(int[] array, int zielwert) { |
|
| 26 | + int links = 0; |
|
| 27 | + int rechts = array.length - 1; |
|
| 28 | + |
|
| 29 | + while (links <= rechts) { |
|
| 30 | + int mitte = links + (rechts - links) / 2; |
|
| 31 | + |
|
| 32 | + if (array[mitte] == zielwert) { |
|
| 33 | + return mitte; // Element gefunden |
|
| 34 | + } |
|
| 35 | + |
|
| 36 | + if (array[mitte] < zielwert) { |
|
| 37 | + links = mitte + 1; // Rechter Teil |
|
| 38 | + } else { |
|
| 39 | + rechts = mitte - 1; // Linker Teil |
|
| 40 | + } |
|
| 41 | + } |
|
| 42 | + return -1; // Element nicht gefunden |
|
| 43 | + } |
|
| 44 | + |
|
| 45 | + public static void main(String[] args) { |
|
| 46 | + int[] zahlen = {2, 4, 7, 10, 15, 20}; |
|
| 47 | + int ergebnis = binareSuche(zahlen, 10); |
|
| 48 | + |
|
| 49 | + if (ergebnis != -1) { |
|
| 50 | + System.out.println("Wert gefunden an Index: " + ergebnis); |
|
| 51 | + } else { |
|
| 52 | + System.out.println("Wert nicht gefunden."); |
|
| 53 | + } |
|
| 54 | + } |
|
| 55 | +} |
|
| 56 | +``` |
|
| 57 | + |
|
| 58 | +## Gut zu wissen |
|
| 59 | + |
|
| 60 | +- Effizienz: Zeitkomplexität $O(\log n)$. |
|
| 61 | +- Voraussetzung: Sortierte Daten. |
|
| 62 | +- Anwendung: Ideal für große, sortierte Arrays. |
|
| 63 | + |
binaer.png
| ... | ... | Binary files /dev/null and b/binaer.png differ |