Búsqueda binaria C++ STL
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.
Descripción general de C++ STL binary_search()
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 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