Pesquisa Binária C++ STL

Harshit Jindal 12 outubro 2023
  1. C++ STL binary_search() Visão geral
  2. Programa C++ para Pesquisa Binária
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 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

Artigo relacionado - C++ Algorithm