Pesquisa Binária C++ STL
C++ nos fornece uma função pronta para uso binary_search()
para que não tenhamos que implementar a função nós mesmos. É um método muito simples de usar e implementado de forma eficiente e não está sujeito a erros.
C++ STL binary_search()
Visão geral
Sintaxe
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);
Aqui, T
pode ser qualquer um dos seguintes: int
, float
, short
, long
, byte
, char
, double
e até mesmo um Object
definido pelo utilizador como Nós vamos.
Ele verifica se um elemento dentro de [first, end)
corresponde ao elemento de destino X
usando o algoritmo de pesquisa binária. Por padrão, ele usa o operador menor que para comparar elementos, mas também podemos fornecer nosso próprio comp
personalizado, conforme descrito no segundo modelo fornecido acima.
Parâmetros
first |
Um iterador direto apontando para o primeiro elemento no intervalo de array fornecido. |
last |
Um iterador direto apontando para o último elemento no intervalo de array fornecido. |
comp |
Uma função de predicado binário definida pelo usuário que aceita dois iteradores de encaminhamento como argumentos e retorna true se os dois argumentos estiverem presentes na ordem correta. Ele não modifica nenhum argumento e segue a ordem estrita e fraca para ordenar os elementos. |
val |
O elemento de destino que estamos pesquisando dentro do intervalo de array fornecido. |
Retornar
Se ele encontrar o elemento de destino, ele retornará verdadeiro; caso contrário, ele retorna falso.
Programa C++ para Pesquisa Binária
#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