Heim > Backend-Entwicklung > C++ > Wie implementiert man einen iteratorbasierten binären Suchalgorithmus für sortierte C-Container?

Wie implementiert man einen iteratorbasierten binären Suchalgorithmus für sortierte C-Container?

Mary-Kate Olsen
Freigeben: 2024-10-24 01:30:01
Original
537 Leute haben es durchsucht

How to Implement an Iterator-Based Binary Search Algorithm for Sorted C   Containers?

Binärer Suchalgorithmus mit Iterator-Rückgabe für C-Container

Der std::binary_search-Algorithmus des STL identifiziert effizient das Vorhandensein eines Elements innerhalb einer Sortierung Container, aber es wird nur ein boolescher Wert zurückgegeben. Für Szenarien, in denen die genaue Position des Elements entscheidend ist, benötigen Sie möglicherweise einen Iterator-basierten Suchalgorithmus.

Um diesem Bedarf gerecht zu werden, kann der folgende benutzerdefinierte binäre Suchalgorithmus eingesetzt werden:

<code class="cpp">template<class Iter, class T>
Iter binary_find(Iter begin, Iter end, T val)
{
    // Finds the lower bound in at most log(last - first) + 1 comparisons
    Iter i = std::lower_bound(begin, end, val);

    if (i != end &amp;&amp; !(val < *i))
        return i; // found
    else
        return end; // not found
}</code>
Nach dem Login kopieren

Dieser Algorithmus verwendet std::lower_bound, um den Einfügepunkt des Werts im Container zu finden (falls er eingefügt werden sollte). Wenn der Wert vorhanden ist, wird der Iterator zurückgegeben; andernfalls wird der Enditerator zurückgegeben. Dieser Ansatz gewährleistet sowohl Geschwindigkeit als auch Präzision

Sie können auch die Verwendung eines std::set in Betracht ziehen, das eine Iterator-Suchfunktion (T-Taste) bereitstellt, die den Iterator, der auf das angegebene Element zeigt, direkt zurückgibt. Dies ist jedoch möglicherweise nicht für Fälle geeignet, in denen doppelte Elemente erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie implementiert man einen iteratorbasierten binären Suchalgorithmus für sortierte C-Container?. 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