Binary Search
Binary Search
Understanding Binary Search
-
The Binary Search is a fast search algorithm that works on sorted lists.
-
It operates by continuously dividing the list in half until the desired item is found.
-
If the item being searched for is less than the item in the middle of the list, the algorithm repeats the process on the left half of the list.
-
If the item being searched for is more than the item in the middle, the right half of the list is considered next.
-
Binary search concludes when the item is found or when the subarray size becomes zero, which means the desired item is not in the list.
How Binary Search Works
-
Binary Search begins with the middle element of the sorted list.
-
If the target value is equal to the middle element of the array, the search ends.
-
If the target value is less than the middle element, the search continues on the lower half of the array.
-
If the target value is higher than the middle element, the search continues on the upper half.
-
The process continues, eliminating half of the elements, and comparing the target value to the middle element of the remaining elements - until the target value is either found (and the index returned), or until the entire array has been searched.
Implementing Binary Search
-
Binary Search can be implemented recursively or iteratively.
-
In a recursive approach, the Binary Search function calls itself, each time with a smaller part of the input array.
-
In the iterative approach, a loop encloses the searching algorithm instead of calling a function with smaller parts of the array.
-
An iterative approach may be slightly more efficient as it avoids the overhead of recursive calls.
Example of Binary Search
-
Here’s a simple pseudocode representation for binary search:
FUNCTION BinarySearch(Array, TargetValue) Low = 0 High = Length of Array - 1 WHILE Low <= High DO Mid = (Low + High) / 2 IF Array[Mid] < TargetValue THEN Low = Mid + 1 ELSE IF Array[Mid] > TargetValue THEN High = Mid - 1 ELSE RETURN Mid ENDIF ENDWHILE RETURN "Not Found" END FUNCTION
Evaluating Binary Search
-
Binary Search is highly efficient, but only when working with sorted data.
-
It has a time complexity of O(log n), making it extremely efficient, even with large datasets.
-
However, it is not suitable for lists that are subject to frequent item additions, as these would need to be sorted first to maintain the efficiency of the binary search.
-
Always consider the nature of your data set and the frequency of search operations to choose the most appropriate search algorithm.
Understanding Time Complexity
-
Time Complexity of an algorithm quantifies the amount of time taken by an algorithm to run, as a function of the size of the input to the program.
-
O(log n) time complexity means that the running time of an algorithm grows logarithmically in proportion to the size of the input data set.
-
Logarithmic time complexity is great because increasing the amount of data has very little effect on the algorithm’s execution time. This makes binary search a preferred method when dealing with large amounts of sorted data.