Brief Summary of Binary Search
Templates
These templates come from LeetCode explore card for binary search.
Tips
The tip below comes from LeetCode 278. First Bad Version.
If you are setting mid = (left+right) / 2
, you have to be very careful. Unless you are using a language that does not overflow such as Python, left + right
could overflow. One way to fix this is to use left + (right-left)/2
instead.
If you fall into this subtle overflow bug, you are not alone. Even Jon Bentley's own implementation of binary search had this overflow bug and remained undetected for over twenty years.