C++ предоставляет нам готовую к использованию функцию binary_search(), поэтому нам не нужно реализовывать ее самостоятельно. Он очень прост в использовании, эффективно реализован и не допускает ошибок.
Содержание
Обзор C++ STL binary_search()
Синтаксис
DEFAULT:
template <class ForwardIterator, class T>
bool binary_search (ForwardIterator first, ForwardIterator last, const T& val);
ПОЛЬЗОВАТЕЛЬСКАЯТЕЛЬСКАЯСКАЯАЯЯ:
template <class ForwardIterator, class T, class Compare>
bool binary_search (ForwardIterator first, ForwardIterator last, const T& val, Compare comp);
Code language: JavaScript (javascript)
Здесь T может быть любым из следующих: int, float, short, long, byte, char, double и даже пользовательским объектом.
Проверяет, совпадает ли элемент в пределах [first, last) с целевым элементом X, используя алгоритм двоичного поиска. По умолчанию он использует оператор less-than для сравнения элементов, но мы также можем предоставить собственный пользовательский comp, как описано во втором шаблоне, приведенном выше.
Параметры
- first – Прямой итератор, указывающий на первый элемент в заданном диапазоне массива.
- last – Прямой итератор, указывающий на последний элемент в заданном диапазоне массива.
- comp – Определяемая пользователем бинарная предикатная функция, которая принимает в качестве аргументов два прямых итератора и возвращает true, если оба аргумента находятся в правильном порядке. Он не изменяет никаких аргументов и следует строгому слабому порядку для сортировки элементов.
- val – Целевой элемент, который мы ищем в заданном диапазоне массива.
Возврат
Если он находит целевой элемент, то возвращает true, в противном случае – false.
Программа на C++ для двоичного поиска
#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 << "Элемент найден" << endl;
}
else {
cout << "Элемент не найден" << endl;
}
return 0;
}
Code language: PHP (php)