C-Programm zur binären Suche (rekursiv und iterativ)
Der binäre Suchalgorithmus ist ein Algorithmus, der auf Vergleichs- und Segmentierungsmechanismen basiert. Der binäre Suchalgorithmus wird auch „Halbrandsuche, logarithmische Suche oder binäre Suche“ genannt. Binärer Suchalgorithmus zum Finden der Position eines Zielwerts in einem sortierten Array. Es vergleicht den Zielwert mit dem mittleren Element des Arrays. Wenn das Element gleich dem Zielelement ist, gibt der Algorithmus den Index des gefundenen Elements zurück. Wenn sie nicht gleich sind, verwendet der Suchalgorithmus die Hälfte des Arrays. Abhängig vom Vergleich der Werte verwendet der Algorithmus die erste Hälfte (wenn der Wert kleiner als die Mitte ist) und die zweite Hälfte (wenn der Wert kleiner als die Mitte ist). die Mitte) und die zweite Hälfte (wenn der Wert größer als die Mitte ist). Machen Sie dasselbe mit der nächsten Hälfte des Arrays. Input:
A[] = {0,2,6,11,12,18,34,45,55,99}
n=55
Output:
55 at Index = 8
- vergleichen wir 55 mit dem mittleren Element des Arrays 18, das kleiner als 55 ist, also verwenden wir die zweite Hälfte des Arrays, das Array {24, 45, 55, 99} , die Mitte ist auch 55. Verwenden Sie es, um den Wert des Suchelements zu überprüfen. Und der übereinstimmende Wert, dann geben wir den Index des Werts als 8 zurück.
Wenn das Suchelement kleiner als die Mitte ist, verwenden wir die erste Hälfte und fahren fort, bis das Element in der Mitte des Arrays gefunden wird.
Um die binäre Suche zu implementieren, können wir Code auf zwei Arten schreiben. Diese beiden Möglichkeiten unterscheiden sich nur von der Art und Weise, wie wir die Funktion aufrufen, die das binäre Suchelement überprüft. Dies sind:
- Iteration verwenden
– Dies bedeutet, dass eine Schleife innerhalb einer Funktion verwendet wird, um die Gleichheit von Zwischenelementen zu überprüfen. < /p>
- Mit
Bei dieser Methode ruft sich die Funktion immer wieder mit einem anderen Wertesatz auf.
Beispiel
#include<stdio.h> int iterativeBsearch(int A[], int size, int element); int main() { int A[] = {0,12,6,12,12,18,34,45,55,99}; int n=55; printf("%d is found at Index %d </p><p>",n,iterativeBsearch(A,10,n)); return 0; } int iterativeBsearch(int A[], int size, int element) { int start = 0; int end = size-1; while(start<=end) { int mid = (start+end)/2; if( A[mid] == element) { return mid; } else if( element < A[mid] ) { end = mid-1; } else { start = mid+1; } } return -1; }
Ausgabe
55 is found at Index 8
Beispiel
#include<stdio.h> int RecursiveBsearch(int A[], int start, int end, int element) { if(start>end) return -1; int mid = (start+end)/2; if( A[mid] == element ) return mid; else if( element < A[mid] ) RecursiveBsearch(A, start, mid-1, element); else RecursiveBsearch(A, mid+1, end, element); } int main() { int A[] = {0,2,6,11,12,18,34,45,55,99}; int n=55; printf("%d is found at Index %d </p><p>",n,RecursiveBsearch(A,0,9,n)); return 0; }
Ausgabe
55 is found at Index 8
Das obige ist der detaillierte Inhalt vonC-Programm zur binären Suche (rekursiv und iterativ). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Nachfolgend finden Sie einen C-Sprachalgorithmus zum Konvertieren römischer Ziffern in Dezimalzahlen: Algorithmus Schritt 1 – Start Schritt 2 – Römische Ziffern zur Laufzeit lesen Schritt 3 – Länge: = strlen(roman) Schritt 4 – Für i=0 bis Länge-1 Schritt 4.1-switch(roman[i]) Schritt 4.1.1-case'm': &nbs

Der lexikografische Zeichenfolgenvergleich bedeutet, dass Zeichenfolgen in Wörterbuchreihenfolge verglichen werden. Wenn beispielsweise zwei Zeichenfolgen „apple“ und „appeal“ vorhanden sind, steht die erste Zeichenfolge an letzter Stelle, da die ersten drei Zeichen von „app“ identisch sind. Dann ist das Zeichen für die erste Zeichenfolge „l“ und in der zweiten Zeichenfolge ist das vierte Zeichen „e“. Da „e“ kürzer als „l“ ist, steht es an erster Stelle, wenn wir lexikografisch sortieren. Zeichenfolgen werden vor der Anordnung lexikografisch verglichen. In diesem Artikel werden wir verschiedene Techniken zum lexikografischen Vergleich zweier Zeichenfolgen mit C++ kennenlernen. Verwendung der Funktion „compare()“ in C++-Strings Das C++-String-Objekt verfügt über eine Funktion „compare()“

Verknüpfte Listen verwenden eine dynamische Speicherzuweisung, d. h. sie wachsen und schrumpfen entsprechend. Sie werden als Ansammlungen von Knoten definiert. Hier besteht ein Knoten aus zwei Teilen: Daten und Links. Die Darstellung von Daten, Links und verknüpften Listen ist wie folgt: - Arten von verknüpften Listen Es gibt vier Arten von verknüpften Listen: - Einfach verknüpfte Liste / Einfach verknüpfte Liste Doppelt / Doppelt verknüpfte Liste Zirkuläre einfach verknüpfte Liste Zirkuläre doppelt verknüpfte Liste Wir Verwenden Sie die rekursive Methode, um die Länge der verknüpften Liste zu ermitteln. Die Logik lautet -intlength(node *temp){ if(temp==NULL) returnl;

Die Umbenennungsfunktion ändert den alten Namen einer Datei oder eines Verzeichnisses in den neuen Namen. Dieser Vorgang ähnelt dem Verschiebevorgang. Wir können diese Umbenennungsfunktion also auch zum Verschieben von Dateien verwenden. Diese Funktion ist in der Headerdatei der stdio.h-Bibliothek vorhanden. Die Syntax der Umbenennungsfunktion lautet wie folgt: intrename(constchar*oldname,constchar*newname); Die Funktion der rename()-Funktion akzeptiert zwei Parameter. Einer ist alter Name und der andere ist neuer Name. Beide Parameter sind Zeiger auf konstante Zeichen, die den alten und neuen Namen der Datei definieren. Gibt Null zurück, wenn die Datei erfolgreich umbenannt wurde; andernfalls wird eine Ganzzahl ungleich Null zurückgegeben. Während eines Umbenennungsvorgangs

Hyperbelfunktionen werden mithilfe von Hyperbeln anstelle von Kreisen definiert und entsprechen gewöhnlichen trigonometrischen Funktionen. Es gibt den Verhältnisparameter in der hyperbolischen Sinusfunktion aus dem angegebenen Winkel im Bogenmaß zurück. Aber machen Sie das Gegenteil, oder anders gesagt. Wenn wir einen Winkel aus einem hyperbolischen Sinus berechnen wollen, benötigen wir eine umgekehrte hyperbolische trigonometrische Operation wie die hyperbolische Umkehrsinusoperation. In diesem Kurs wird gezeigt, wie Sie die hyperbolische Umkehrsinusfunktion (asinh) in C++ verwenden, um Winkel mithilfe des hyperbolischen Sinuswerts im Bogenmaß zu berechnen. Die hyperbolische Arkussinusoperation folgt der folgenden Formel -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}, Wo\:In\:ist\:natürlicher Logarithmus\:(log_e\:k)

Eine Karte ist ein spezieller Containertyp in C++, bei dem jedes Element ein Paar aus zwei Werten ist, nämlich einem Schlüsselwert und einem zugeordneten Wert. Der Schlüsselwert wird zum Indizieren jedes Elements verwendet, und der zugeordnete Wert ist der mit dem Schlüssel verknüpfte Wert. Unabhängig davon, ob der zugeordnete Wert eindeutig ist, ist der Schlüssel immer eindeutig. Um Kartenelemente in C++ zu drucken, müssen wir einen Iterator verwenden. Ein Element in einer Menge von Elementen wird durch ein Iteratorobjekt angegeben. Iteratoren werden hauptsächlich mit Arrays und anderen Arten von Containern (z. B. Vektoren) verwendet und verfügen über einen bestimmten Satz von Operationen, mit denen bestimmte Elemente innerhalb eines bestimmten Bereichs identifiziert werden können. Iteratoren können inkrementiert oder dekrementiert werden, um auf verschiedene Elemente in einem Bereich oder Container zu verweisen. Der Iterator zeigt auf den Speicherort eines bestimmten Elements im Bereich. Drucken einer Karte in C++ mit Iteratoren Schauen wir uns zunächst an, wie man definiert

Die Verwendung von Zeichenfolgen oder Zeichen ist manchmal sehr nützlich, wenn man einige Probleme der Logikprogrammierung löst. Eine Zeichenfolge ist eine Sammlung von Zeichen. Dabei handelt es sich um einen 1-Byte-Datentyp, der zum Speichern von Symbolen in ASCII-Werten verwendet wird. Symbole können englische Buchstaben, Zahlen oder Sonderzeichen sein. In diesem Artikel erfahren Sie, wie Sie mit C++ überprüfen, ob ein Zeichen ein englischer Buchstabe oder ein Buchstabe des Alphabets ist. Überprüfen der Funktion isalpha() Um zu überprüfen, ob eine Zahl ein Buchstabe ist, können wir die Funktion isalpha() in der Header-Datei ctype.h verwenden. Dies nimmt ein Zeichen als Eingabe und gibt „true“ zurück, wenn es sich um ein Alphabet handelt, andernfalls „false“. Schauen wir uns die folgende C++-Implementierung an, um die Verwendung dieser Funktion zu verstehen. Die chinesische Übersetzung von Beispiel lautet: show

Die moderne Wissenschaft stützt sich stark auf das Konzept der Pluralzahlen, das erstmals im frühen 17. Jahrhundert von Girolamo Cardano etabliert und im 16. Jahrhundert eingeführt wurde. Die Formel für komplexe Zahlen lautet a+ib, wobei a den HTML-Code enthält und b eine reelle Zahl ist. Eine komplexe Zahl soll aus zwei Teilen bestehen: dem Realteil <a> und dem Imaginärteil (<ib>). Der Wert von i oder iota ist √-1. Die Pluralklasse in C++ ist eine Klasse zur Darstellung komplexer Zahlen. Die komplexe Klasse in C++ kann mehrere komplexe Zahlenoperationen darstellen und steuern. Werfen wir einen Blick darauf, wie man die Anzeige mehrerer Zahlen darstellt und steuert. Mitgliedsfunktion imag() Wie oben erwähnt, bestehen komplexe Zahlen aus einem Realteil und einem Imaginärteil. Um den Realteil anzuzeigen, verwenden wir real()
