The binary search technique is a fundamental method for locating an element of a particular value within a sequence of sorted elements (see Sorting Problem). The idea is to eliminate half of the search space with each comparison.
First, the middle element of the sequence is compared to the value we are searching for. If this element matches the value we are searching for, we are done. If, however, the middle element is “less than” the value we are chosen for (as specified by the relation (http://planetmath.org/Relation) used to specify a total order over the set of elements), then we know that, if the value exists in the sequence, it must exist somewhere after the middle element. Therefore we can eliminate the first half of the sequence from our search and simply repeat the search in the exact same manner on the remaining half of the sequence. If, however, the value we are searching for comes before the middle element, then we repeat the search on the first half of the sequence.
Algorithm Binary_Search(L, n, key)
Input: A list of elements, and (the search key)
Output: (such that )
We can specify the runtime complexity of this binary search algorithm by counting the number of comparisons required to locate some element in . Since half of the list is eliminated with each comparison, there can be no more than comparisons before either the positions of all the elements are found or the entire list is eliminated and is determined to not exist in . Thus the worst-case runtime complexity of the binary search is . It can also be shown that the average-case runtime complexity of the binary search is approximately comparisons. This means that any single entry in a phone book containing one million entries can be located with at most 20 comparisons (and on average 19).
|Date of creation||2013-03-22 11:44:34|
|Last modified on||2013-03-22 11:44:34|
|Last modified by||mathcam (2727)|