Heim > häufiges Problem > Hauptteil

binärer Suchalgorithmus

(*-*)浩
Freigeben: 2019-06-18 10:49:06
Original
20418 Leute haben es durchsucht

Die binäre Suche wird auch als binäre Suche bezeichnet und ist eine effizientere Suchmethode. Die binäre Suche erfordert jedoch, dass die lineare Tabelle eine sequentielle Speicherstruktur annimmt und die Elemente in der Tabelle nach Schlüsselwörtern geordnet werden müssen.

binärer Suchalgorithmus

Suchprozess

Angenommen, die Elemente in der Tabelle sind in aufsteigender Reihenfolge angeordnet, notieren Sie zunächst den Schlüssel in der Mitte der Tabelle Das Wort wird mit dem Suchschlüsselwort verglichen. Wenn die beiden gleich sind, ist die Suche erfolgreich. Andernfalls wird der mittlere Positionsdatensatz verwendet, um die Tabelle in die erste und letzte Untertabelle zu unterteilen Wenn der in der mittleren Position aufgezeichnete Wert größer als das Suchwort ist, wird die vorherige Untertabelle weiter durchsucht, andernfalls wird weiter nach der nächsten Untertabelle gesucht. Wiederholen Sie den obigen Vorgang, bis ein Datensatz gefunden wird, der die Bedingungen erfüllt, wodurch die Suche erfolgreich ist, oder bis die Untertabelle nicht mehr vorhanden ist. In diesem Fall schlägt die Suche fehl.

Anzahl der Vergleiche

Berechnungsformel:

Wenn die Sequenztabelle n Schlüsselwörter enthält:

Wenn die Suche fehlschlägt, vergleichen Sie das Schlüsselwort mindestens ein Mal. Wenn die Suche erfolgreich ist, beträgt die maximale Anzahl an Schlüsselwortvergleichen b.

Hinweis: a, b, n sind alle positive ganze Zahlen.

Algorithmuskomplexität

Die Grundidee der binären Suche besteht darin, n Elemente in zwei ungefähr gleiche Teile zu teilen und a[n/2] mit x zu vergleichen, Wenn x=a[n/2], dann wird x gefunden und der Algorithmus wird beendet, wenn xa[. n/2], dann suchen Sie einfach nach x in der rechten Hälfte des Arrays a.

Die zeitliche Komplexität ist nichts anderes als die Anzahl der While-Schleifen!

Es gibt insgesamt n Elemente,

folgen nach und nach n, n/2, n/4, .... n/2^k (die verbleibende Anzahl von Elementen wird als nächstes bearbeitet). ), wobei k die Anzahl der Zyklen ist

Da Ihr n/2^k gerundet ist >=1

, also n/2^k=1

kann erhalten werden k=log2n, (es ist der Logarithmus von n zur Basis 2)

Die Zeitkomplexität kann also ausgedrückt werden als O(h)=O(log2n)

Nachfolgend finden Sie eine Halbierung. Finden Sie den Pseudocode der Implementierung:

BinarySearch(max,min,des)

mid-<(max+min)/2

while(min< =max)

mid=(min+max)/2

if mid=des then

return mid

elseif mid >des then

max=mid-1

else

min=mid+1

return max

Half search Diese Methode wird auch als binäre Suche bezeichnet. Diese Methode nutzt die Ordnungsbeziehung zwischen Elementen vollständig aus und übernimmt die Divide-and-Conquer-Strategie, die im schlimmsten Fall die Suchaufgabe in O (log n) abschließen kann. Seine Grundidee ist: (unter der Annahme, dass die Array-Elemente in aufsteigender Reihenfolge angeordnet sind) n Elemente in zwei Hälften mit ungefähr der gleichen Anzahl teilen, a[n/2] nehmen und es mit dem x vergleichen, das Sie finden möchten, wenn x= a[n/ 2] dann wird x gefunden und der Algorithmus endet; wenn x

Das obige ist der detaillierte Inhalt vonbinärer Suchalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage