# Binary Search

### What is Binary Search

When learning linear search, you were asked to perform an exercise with a phone book. Go get the phonebook again. Let's say we're looking for the name 'John Smith'. Open up the phone book approximately half way and look at the name at the top of the page. What does it say? Probably a name that begins with an 'M' or some letter in that vicinity. Now think to yourself, does Smith come before or after this in the phonebook? After, right? So you can ignore the entire first half of the phone book. Now open the remaining half about half way. You're probably somewhere near the 'T's. Does Smith come before or after 'T' in the phonebook? Before. So you can ignore the latter half. Continue doing this until you find the name for which you're looking.

What you've just done is a binary search. Binary search involves binary decisions, decisions with two choices. At each step in the process you can eliminate half of the data you're searching. This is the way humans look up most information in big volumes, such as a phonebook or a dictionary. We guess a place in the middle of the book, then move forward or backward depending on the location you're at relative to the location of what you're looking for. This works because all of the data is sorted, in alphabetical order in the case of a phonebook or dictionary.

Binary search is much faster than linear search for most data sets. If you look at each item in order, you may have to look at every item in the data set before you find the one you are looking for. With binary search, you eliminate half of the data with each decision. If there are n items, then after the first decision you eliminate n/2 of them. After the second decision you've eliminated 3n/4 of them. After the third decision you've eliminated 7n/8 of them. Etc. In other words, binary search is O(logn) . You can see that for a large data set, binary search would be much better than linear search.

Figure %: Rate of Growth: n vs log(n)