Búsqueda binaria C++ STL

Harshit Jindal 12 octubre 2023
  1. Descripción general de C++ STL binary_search()
  2. Programa C++ para búsqueda binaria
Búsqueda binaria C++ STL
Nota
Si desea comprender la búsqueda binaria en detalle, consulte el artículo algoritmo de búsqueda binaria.

C++ nos proporciona una función lista para usar binary_search() para que no tengamos que implementar la función nosotros mismos. Es un método muy simple de usar, implementado de manera eficiente y no propenso a errores.

Sintaxis

DEFAULT
    : template <class ForwardIterator, class T>
      bool
      binary_search(ForwardIterator first, ForwardIterator last, const T& val);

CUSTOM COMPARISON FUNCTION
    : template <class ForwardIterator, class T, class Compare>
      bool
      binary_search(ForwardIterator first, ForwardIterator last, const T& val,
                    Compare comp);

Aquí, T puede ser cualquiera de los siguientes: int, float, short, long, byte, char, double, e incluso un Object definido por el usuario como bien.

Comprueba si un elemento dentro de [first, last) coincide con el elemento de destino X utilizando el algoritmo de búsqueda binaria. De forma predeterminada, utiliza el operador menor que para comparar elementos, pero también podemos proporcionar nuestra propia comp personalizada como se describe en la segunda plantilla proporcionada anteriormente.

Parámetros

first Un iterador hacia adelante que apunta hacia el primer elemento en el rango de array dado.
last Un iterador hacia adelante que apunta hacia el último elemento en el rango de array dado.
comp Una función de predicado binario definida por el usuario que acepta dos iteradores hacia adelante como argumentos y devuelve true si los dos argumentos están presentes en el orden correcto. No modifica ningún argumento y sigue el estricto orden débil para ordenar los elementos.
val El elemento de destino que estamos buscando dentro del rango de array dado.

Retorna

Si encuentra el elemento de destino, devuelve verdadero; de lo contrario, devuelve falso.

Programa C++ para búsqueda binaria

#include <bits/stdc++.h>
using namespace std;

int main() {
  vector<int> v = {1, 2, 3, 4, 5, 6};

  if (binary_search(v.begin(), v.end(), 5)) {
    cout << "Element found" << endl;
  } else {
    cout << "Element not found" << endl;
  }

  return 0;
}
Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artículo relacionado - C++ Algorithm