Die binäre Suche ist eine schnelle Methode, um ein Ziel in einer sortierten Liste zu finden. Du prüfst das mittlere Element, schließt die Hälfte der verbleibenden Werte aus und wiederholst den Vorgang. Ist die Liste nicht geordnet, funktioniert diese Logik nicht.

Bei einer aufsteigend sortierten Liste ist die Regel einfach: Ist der mittlere Wert kleiner als das Ziel, suche rechts; ist er größer, suche links. Weil sich der Bereich jedes Mal ungefähr halbiert, läuft die binäre Suche in O(logn)O(\log n) Zeit.

So funktioniert die binäre Suche in einer sortierten Liste

Verwende diese sortierte Liste:

[3,7,12,18,24,31,39,45,52][3, 7, 12, 18, 24, 31, 39, 45, 52]

Angenommen, das Ziel ist 3131.

Beginne mit dem gesamten Bereich. Der mittlere Wert ist 2424. Da 31>2431 > 24 gilt, kann alles links von 2424 ausgeschlossen werden, also geht die Suche weiter in

[31,39,45,52][31, 39, 45, 52]

Jetzt ist der mittlere Wert 3939. Da 31<3931 < 39 gilt, kann alles rechts von 3939 ausgeschlossen werden, also wird der Bereich zu

[31][31]

Nun ist der mittlere Wert 3131, also stoppt die Suche. Die wichtige Idee ist nicht nur, dass das Ziel gefunden wurde. In zwei Vergleichen ist der Kandidatenbereich von 99 Werten auf 11 gesunken.

Warum die binäre Suche O(logn)O(\log n) ist

Jeder Vergleich entfernt ungefähr die Hälfte der verbleibenden Kandidaten. Nach einem Schritt bleiben etwa n/2n/2 Elemente übrig. Nach zwei Schritten bleiben etwa n/4n/4 übrig. Nach kk Schritten ist die verbleibende Größe ungefähr

n2k\frac{n}{2^k}

Die Suche endet, wenn diese Größe ungefähr 11 ist, also gilt für die Anzahl der Schritte

2kn2^k \approx n

Wenn man auf beiden Seiten den log2\log_2 nimmt, erhält man

klog2nk \approx \log_2 n

Deshalb skaliert die binäre Suche gut. Eine lineare Suche kann bis zu nn Prüfungen benötigen, aber die binäre Suche braucht nur so viele Prüfungen, wie nötig sind, um den Bereich immer weiter zu halbieren.

Codebeispiel für die binäre Suche

Hier ist eine übliche iterative Version in Python:

Brauchst du Hilfe bei einer Aufgabe?

Lade deine Frage hoch und erhalte in Sekunden eine verifizierte Schritt-für-Schritt-Lösung.

GPAI Solver öffnen →