Heim > Backend-Entwicklung > C++ > Hauptteil

Können Sie einen effizienten binären Suchalgorithmus in C implementieren, der einen Iterator zum Suchergebnis zurückgibt?

Barbara Streisand
Freigeben: 2024-10-24 03:16:02
Original
601 Leute haben es durchsucht

Can You Implement an Efficient Binary Search Algorithm in C   that Returns an Iterator to the Search Result?

Suche nach einem effizienten binären Suchalgorithmus in C

Programmierer versuchen oft, effiziente binäre Suchalgorithmen zu implementieren, die die Vorteile der logarithmischen Zeitkomplexität bieten . Eine häufige Anforderung besteht darin, dass der Algorithmus einen Iterator zurückgibt, der auf das Suchergebnis zeigt, und nicht einen einfachen booleschen Wert, der dessen Existenz angibt.

Die C-Standardbibliothek stellt std::binary_search im Header, aber es wird nur ein boolescher Wert zurückgegeben. Wie der Fragesteller anmerkte, kann dies in Situationen frustrierend sein, in denen die Geschwindigkeit einer binären Suche gewünscht ist und die Daten bekanntermaßen sortiert sind.

Glücklicherweise gibt es alternative Implementierungen, die die gewünschte Funktionalität bieten. Eine beliebte Option ist die Verwendung eines benutzerdefinierten Algorithmus, der die Funktionen std::lower_bound, std::upper_bound oder std::equal_range nutzt. Hier ist eine vereinfachte Version einer solchen Implementierung:

<code class="cpp">template<class Iter, class T>
Iter binary_find(Iter begin, Iter end, T val) {
    // Determine the lower bound using binary search
    Iter i = std::lower_bound(begin, end, val);

    // If the element is found, return the iterator to it
    if (i != end && !(val < *i)) {
        return i;
    }

    // Otherwise, return the end iterator
    else {
        return end;
    }
}</code>
Nach dem Login kopieren

Alternativ kann ein std::set verwendet werden, das die Reihenfolge der Elemente garantiert und die Find-Methode bereitstellt, die einen Iterator zum gewünschten Element zurückgibt. Es ist jedoch wichtig zu prüfen, ob die Anforderungen mit der Verwendung eines Satzes kompatibel sind, insbesondere in Fällen, in denen mehrere Instanzen desselben Elements gespeichert werden müssen.

Das obige ist der detaillierte Inhalt vonKönnen Sie einen effizienten binären Suchalgorithmus in C implementieren, der einen Iterator zum Suchergebnis zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!