C ++ Binäre Suche

C ++ Binäre Suche
C ++ erstellt viele Suchmethoden, um eine bestimmte Variable aus dem Array oder einer anderen Datenstruktur zu durchsuchen. Bei allen von ihnen ist die binäre Suche für ihre schnelle Reaktion ziemlich bekannt. Ein Array wird innerhalb der binären Suche in zwei Hälften umgewandelt, während es bereits sortiert ist. Der Vergleich würde durch einen Mittelpunkt eines Arrays durchgeführt werden. Dieser Mittelpunktwert würde uns sagen, dass wir den erforderlichen Wert in der linken Hälfte eines Arrays oder der rechten Hälfte durchsuchen sollen. Die halbe Zeit für die Suche wird bei der Arbeit mit der binären Suchmethode im Vergleich zu anderen Suchmethoden gespeichert. In diesem einfachen Artikel werden wir also einige Beispiele erörtern, um die Arbeit der binären Suche mit iterativen und rekursiven Suchmethoden zu veranschaulichen.

Nachdem Sie die Terminalhülle schnell geöffnet haben, müssen Sie eine C ++ - Datei benötigen, um Ihren binären Suchcode darin zu erstellen. Daher ein einfacher Befehl mit einem Wortschlüsselwort, ich.e., "Berührung" wird aus diesem Grund genutzt. Wir haben es also verwendet, um eine C ++ - Datei mit dem Namen „Binary) zu erstellen.CC ”und eröffnet es über den integrierten GNU-Nano-Editor, der die Konfiguration des Ubuntu 20 erstellt.04 System. Beide Befehle wurden bereits mit Hilfe des Bildes unten demonstriert.

Beispiel 01: Iterative Methode

Die allererste Methode, die wir hier verwendet haben, ist die iterative Methode der binären Suche. Es wäre recht einfach zu tun. Nachdem die Datei im Nano -Editor geöffnet wurde, haben wir die Header -Dateien hinzugefügt, die der Code ausgeführt werden müssen. Der Namespace, der Standard sein muss, ist für C ++ - Code hier erforderlich. Eine benutzerdefinierte Funktion mit dem Namen „Search“ wurde erstellt, um eine binäre Suche durchzuführen. Diese benutzerdefinierte Funktion nimmt 4 Argumente in ihren Parametern auf, i.e., "A []" für Array, links für Arrays links den größten Wert, rechts für Arrays rechts den größten Wert und V für den Wert, der im Array "A" gesucht wird.

Innerhalb des Beginns dieser Funktion haben wir eine einfache „während“ -Schloop verwendet, um zu überprüfen. Wenn der Wert kleiner oder gleich dem rechtssten Wert ist, erzeugt er einen neuen Punkt im Array, i.e., Mitte. Dieser Mittelpunkt wurde berechnet, indem sowohl links als auch rechts verwendet werden. Nachdem der Mittelpunkt gefunden wurde, verwenden wir die Anweisung "If", um zu überprüfen, ob der Wert im Mittelindex eines Arrays "A" der gleiche Wert ist, der den von der Überprüfung angeforderten Wert ist, i ist i.e., "V". Wenn die Bedingung wirksam wurde und der Wert „V“ mit dem Mid-Index-Wert übereinstimmt, gibt er die mittlere Index eines Arrays zurück. Zu Beginn hat unser Array zwei Hälften links und rechts. Die linke enthält kleinere Werte, während der rechte die größeren Werte im Vergleich zum Mid-Index-Wert enthält. Wenn der Wert in einem Mittelpunkt geringer ist als der zu durchsuchende Wert, müssen wir die linke Hälfte eines Arrays nicht berücksichtigen, da dies kleinere Werte enthält.

Wir werden also unsere linke Variable mit dem Index von „Mid+1“ aktualisieren. Auf der anderen Seite müssen wir die rechte Hälfte (größere Werte) eines Arrays ignorieren, wenn der mittlere Wert größer ist als der Wert. Die richtige Variable wird also durch einen neuen Wert aktualisiert, ich.e., "Mid-1". Dieser Vorgang erfolgt weiter. Wenn die Bedingungen nicht erfüllt sind, haben wir den Wert im Array nicht gefunden und -1 als Index für die Hauptmethode zurückgegeben.

Kam nun zur Main () -Funktionsinimposition gekommen. Innerhalb dieser Funktion haben wir ein Array mit dem Namen "A" mit einigen ganzzahligen Werten deklariert. Das Array ist bereits in aufsteigender Reihenfolge sortiert. Dann wurde eine Variable „V“ initialisiert, bei der ein von einem Benutzer eingegebener Wert gespeichert wird. In der Cout -Anweisung wird ein Benutzer angewiesen, eine Nummer einzugeben, während die CIN -Anweisung verwendet wird, um die Benutzereingabe zu sammeln und in der Variablen "V" zu speichern.

Eine andere Variable, „N“, wurde definiert, um die Gesamtgröße eines Arrays mit sizeof () Funktionsverbrauch auf dem Array „A“ zu erhalten. Eine andere Variable, "Val", wurde verwendet, um den Index aus der Suchmethode als Rückgabewert zu erhalten. Der Funktionsaufruf übergibt das Array A, den linken Punkt als 0, den rechten Punkt als Ganzzahl „N-1“ und den zu durchsuchenden Wert „V“. Wenn die Suchmethode "-1" in variable "Val" zurückgibt, wird die erste Cout-Anweisung ausgeführt. Andernfalls wird die zweite ausgeführt und zeigt den Index eines Werts angezeigt.

Somit benötigt der Code zuerst die Kompilierung. Nach der ersten und zweiten Ausführung trat der Benutzer 14 und 19 ein und wurde mit Index 3 bzw. 8 abgestimmt, wie angezeigt. Bei der dritten Ausführung hat es nicht wie gezeigt geklappt. Der G ++ - Compiler ist also für Ihre Hilfe hier.

Beispiel 02: Rekursive Methode

Hier ging es um die iterative Methode der binären Suche in C++. Lassen Sie uns eine zweite Methode haben, um eine binäre Suche in C ++ durchzuführen, eine bekannte und rekursive Methode. Die rekursive Methode wäre die gleiche wie die iterative Methode, rufen Sie jedoch die binäre Suchmethode rekursiv auf. Wir werden es mit dem Code erklären. Öffnen Sie also dieselbe Datei und aktualisieren Sie die Suchmethode. Wir haben das gleiche verwendet, während wir innerhalb der Suchmethode mit den gleichen Bedingungen darin Schleifen haben, i, ich.e., IF-ELSE-Anweisungen, Single If Anweisung und Mid-Point-Berechnung.

Die einzige Änderung wurde in der IF-ELSE-Anweisung der Suchfunktion durchgeführt. Wenn der mittlere Punktwert größer ist als der Wert, der in der Suchmethode gesucht wird und die Bedingung erfüllt ist, wird dieselbe Suchmethode mit geringer Änderung der Parameter aufgerufen. Alle Parameter sind mit Ausnahme des "rechten" Punktwerts, der jetzt der "Mid-1" -Endex ist. Andererseits, wenn ein mittlerer Punktwert geringer ist als der Wert, der durchsucht wird, ist ich.e., "V" und die Bedingung ist nicht erfüllt, sie wird dieselbe Funktion mit ein wenig Änderung bei seinem Parameterargument "links" aufrufen. Der linke Punkt wird jetzt mit dem Index von „Mid+1“ aktualisiert.

Sie können sehen, dass die Funktion main () zu 100% dem oben genannten iterativen Beispiel ist, und es hat keine einzige Zeichenänderung darin.

Kompilieren Sie zuerst diesen aktualisierten rekursiven Code mit G ++ und führen Sie ihn dann aus. Nach der ersten Ausführung gibt es 3 als Ergebnis auf Wert 14 zurück, während bis zur zweiten Ausführung bisher kein Index für Wert 24 gefunden wurde.

Abschluss:

Im obigen gesamten Artikel dreht sich alles um binäre Suche in C++. Die binäre Suche wurde mit zwei verschiedenen Methoden entdeckt und gut erklärt, ich.e., iterativ und rekursiv. Alle implementierten und demonstrierten Beispiele sind recht einfach und leicht zu verstehen, da jeder Schritt kurz erklärt wurde. Daher hoffen wir große Hoffnungen, dass dieser Artikel für einen naiven, neuen und erfahrenen Benutzer gleichermaßen vorteilhaft wäre.