| Infos Home | Impressum | Original Artikel & Autoren Liste |
| Inhalt |
|
1 Algorithmus 2 Komplexität 3 Ähnliche Verfahren 4 Verschiedene Implementierungen |
Jede weiterhin zu untersuchende Hälfte wird wieder gleich behandelt:
Das mittlere Element liefert wieder die Entscheidung darüber, wo bzw. ob weitergesucht werden muss.
Die Länge des Suchbereiches wird von Schritt zu Schritt halbiert. Spätestens wenn der Suchbereich auf 1 Element geschrumpft ist, ist die Suche beendet. Dieses eine Element ist entweder gesuchte Element, oder das gesuchte Element kommt nicht vor.
Der Algorithmus zur binären Suche wird entweder als Iteration oder Rekursion implementiert.
Sucht den Buchstaben D in einem mit dem Alphabet gefüllten Array
Eingabe: (S)uchschlüssel, Array (sortiert)
Variable: SucheErfolgreich = falsch (Boolsche Variable)
Variable: ErstesElement = 1
Variable: LetztesElement = Anzahl der Elemente im Array
Wenn Mitte = S ist dann
+ SucheErfolgreich = wahr
Wenn S < als Mitte ist dann
+ links weitersuchen (LetztesElement = Mitte - 1)
Sonst (S>als Mitte)
+ rechts weitersuchen (erstesElemet = Mitte + 1
Wenn SucheErfolgreich = wahr dann
end BinäreSuche
Algorithmus
Zuerst wird das mittlere Element des Arrays oder der Liste überprüft. Es kann kleiner, größer oder gleich dem gesuchten Element sein.
Ist es kleiner als das gesuchte Element, muss das gesuchte Element in der hinteren Hälfte stecken, falls es sich dort überhaupt befindet. Ist es hingegen größer, muss nur in der vorderen Hälfte weitergesucht werden. Die jeweils andere Hälfte muss nicht mehr betrachtet werden. Ist es gleich dem gesuchten Element, ist die Suche (vorzeitig) beendet.Komplexität
Um in einem Array mit n Einträgen ein Element zu finden bzw. festzustellen, dass dieses sich nicht im Array befindet, werden maximal log2n Schritte benötigt. Somit liegt die binäre Suche, in der Landau-Notation ausgedrückt, in der Komplexitätsklasse O(log n). Damit ist sie deutlich schneller als die lineare Suche, welche allerdings den Vorteil hat, auch auf unsortierten Listen zu funktionieren. Noch schneller als die binäre Suche ist die Interpolationssuche.Ähnliche Verfahren
Das beschrieben binäre Suchverfahren ähnelt dem Verfahren der Intervallschachtelung.Verschiedene Implementierungen
Pseudocode
program BinäreSuche
WiederholeVariable: Mitte = ErstesElement + LetztesElement DIV 2
Solange SucheErfolgreich = falsch und ErstesElement <= LetztesElement+ Ausgabe: Mitte
sonst
+ Suche nicht erfolgreich (Suchschlüssel nicht in Array vorhanden)
Java
|
Der Ursprungsartikel stammt von der deutschsprachigen Wiki pedia (siehe oben: "Original Artikel & Autoren Liste"). Der Text steht unter der GNU Freie Dokumentation Lizenz. |