Question:
Why is std::binary_search
needed when there is std::find
?
Answer:
Binary search only works on:
- random access containers (such as an array)
- which are sorted
These are pretty strict requirements. If they are not met, only a linear search remains.
The speed of binary search is logarithmic, linear – surprise – linear.
This means, for example, that among the four billion sorted elements (2 ^ 32), the desired one is guaranteed to be found in just 32 comparison steps. Or it will show that there is no such element.
To achieve the same result, linear search will perform all 4 billion comparisons.