Binary Search
Binary Search Algorithm
Binary search algorithm finds a given element in a list of
elements with O(log n) time complexity where n is
total number of elements in the list. The binary search algorithm can be used
with only a sorted list of elements. That means the binary search is used only
with a list of elements that are already arranged in an order. The binary
search can not be used for a list of elements arranged in random order. This
search process starts comparing the search element with the middle element in
the list. If both are matched, then the result is "element found".
Otherwise, we check whether the search element is smaller or larger than the
middle element in the list. If the search element is smaller, then we repeat
the same process for the left sub list of the middle element. If the search
element is larger, then we repeat the same process for the right sub list of the
middle element. We repeat this process until we find the search element in the
list or until we left with a sub list of only one element. And if that element
also doesn't match with the search element, then the result is "Element
not found in the list".
Binary search is implemented using following steps...
- Step 1 - Read the search element from
the user.
- Step 2 - Find the middle element in the
sorted list.
- Step 3 - Compare the search element with
the middle element in the sorted list.
- Step 4 - If both are matched, then
display "Given element is found!!!" and terminate the function.
- Step 5 - If both are not matched, then
check whether the search element is smaller or larger than the middle
element.
- Step 6 - If the search element is
smaller than middle element, repeat steps 2, 3, 4 and 5 for the left
sub list of the middle element.
- Step 7 - If the search element is larger
than middle element, repeat steps 2, 3, 4 and 5 for the right sub list of
the middle element.
- Step 8 - Repeat the same process until
we find the search element in the list or until sub list contains only one
element.
- Step 9 - If that element also doesn't match with the search element, then display "Element is not found in the list!!!" and terminate the function.
Algorithm
1.Input an array A of n elements and “data” to be sorted.
2. LB = 0,UB = n-1; mid = int (( LB + UB ) / 2 )
3. Repeat step 4 and 5 while ( LB <= UB ) and ( A [ mid ] != data )
4. If ( data <A [ mid ] )
UB = mid - 1
else
LB = mid +1
5.Mid = int (( LB + UB ) / 2 )
6.If (A [ mid ] == data )
Print “the data is found”
else
Print “the data is not found"
7. Exit
Complexity
S.No. |
Performance |
Complexity |
1 |
Worst case |
O(log n) |
2 |
Best case |
O(1) |
3 |
Average Case |
O(log n) |
4 |
Worst case space complexity |
O(1) |
Example
Consider the following list of elements and the element to be
searched...