Site hosted by Angelfire.com: Build your free website today!

Binäre Suche


Die binäre Suche kann man nur auf ein sortiertes Feld anwenden. Sie arbeitet folgendermaßen:
Es wird der Schlüssel des Elements in der Mitte des Feldes mit dem Suchschlüssel verglichen.
Wenn beide gleich sind, ist die Suche erfolgreich beendet. Ist der Suchschlüssel kleiner, wird der Teil links vom gewählten Element nach dem gleichen System untersucht. Ist der Suchschlüssel größer, wird der Teil rechts vom gewählten Element nach dem gleichen System uintersucht. Dies wird solange (maximal lg N + 1 mal) durchgeführt, bis entweder das gesuchte Element gefunden wurde oder bis man merkt, dass der Schlüssel nicht im Feld enthalten ist. Das letztere stellt man fest, wenn sich der linke Feldbegrenzer weiter rechts befindet, als der rechte Begrenzer (siehe Code).

Hier nun ein Beispiel für eine erfolgreiche Suche:
Man stelle sich ein Feld von hundert Elementen vor, mit den Schlüsseln 1 bis 100. Wir suchen nun nach der 32.
(Feld 1...100)            32 < 50
(Feld 1...49)              32 > 25
(Feld 26...49)            32 < 37
(Feld 26...36)            32 > 31
(Feld 32...36)            32 < 34
(Feld 32...33)            32 = 32

Obwohl die 32 an einer eher ungünstigen Position steht, sind 6 Vergleiche im Gegensatz zu 32 bei der sequentiellen Suche eine große Steigerung an Effizienz. Diese Schnelligkeit  macht sich besonders bei sehr großen Feldern bemerkbar, bei denen die Anzahl der Vergleiche bei der binären Suche kaum ansteigt.

dataType cm_BinaereSuche(itemType wert) {
     int l = 1, r = N, teiler;
     while(r >= l) {
         teiler = (l+r)/2;
         if(wert == feld[teiler].key) 
             return feld[teiler].daten;
         if(wert < feld[teiler].key) 
             r = teiler - 1;
         else
             l = teiler + 1;
     }
     return keineDaten;
}



   Computer    Programmieren (incl. C++ Kurs)    Algorithmen    Bücher    

Zeitschriften    Heavy Metal    Mountainbiking    Meine Katze    

Über mich und die Site    Links    Downloads    Gästebuch    HP mit Umfrage