Binary Search In JavaScript (original) (raw)
Last Updated : 10 Jan, 2025
Binary Search is a searching technique that works on the Divide and Conquer approach. It is used to search for any element in a sorted array. Compared with linear, binary search is much faster with a Time Complexity of O(logN), whereas linear search works in O(N) time complexity
**Examples:
Input : arr[] = {1, 3, 5, 7, 8, 9}, x = 5
Output : Element found!
Input : arr[] = {1, 3, 5, 7, 8, 9}, x = 6
Output : Element not found!
**Note: Assuming the array is sorted.
These are the following ways to do Binary Search in JavaScript:
Table of Content
**Recursive Approach
- _BASE CONDITION: If the starting index is greater than the ending index return false.
- Compute the middle index.
- Compare the middle element with the number x. If equal return true.
- If greater, call the same function with ending index = middle-1 and repeat step 1.
- If smaller, call the same function with starting index = middle+1 and repeat step 1.
**Example: This example shows the use of the above-explained approach.
javascript `
let recursiveFunction = function (arr, x, start, end) {
// Base Condition
if (start > end) return false;
// Find the middle index
let mid = Math.floor((start + end) / 2);
// Compare mid with given key x
if (arr[mid] === x) return true;
// If element at mid is greater than x,
// search in the left half of mid
if (arr[mid] > x)
return recursiveFunction(arr, x, start, mid - 1);
else
// If element at mid is smaller than x,
// search in the right half of mid
return recursiveFunction(arr, x, mid + 1, end);
}
// Driver code let arr = [1, 3, 5, 7, 8, 9]; let x = 5;
if (recursiveFunction(arr, x, 0, arr.length - 1)) { console.log("Element found!"); } else { console.log("Element not found!"); }
x = 6;
if (recursiveFunction(arr, x, 0, arr.length - 1)) { console.log("Element found!"); } else { console.log("Element not found!"); }
`
Output
Element found! Element not found!
**Time Complexity: O(logN)
**Auxiliary Space: O(1)
**Iterative Approach
In this iterative approach, instead of recursion, we use a while loop, and the loop runs until it hits the base condition, i.e. start becomes greater than end.
**Example: This example shows the use of the above-explained approach.
javascript `
// Iterative function to implement Binary Search let iterativeFunction = function (arr, x) {
let start = 0, end = arr.length - 1;
// Iterate while start not meets end
while (start <= end) {
// Find the mid index
let mid = Math.floor((start + end) / 2);
// If element is present at
// mid, return True
if (arr[mid] === x) return true;
// Else look in left or
// right half accordingly
else if (arr[mid] < x)
start = mid + 1;
else
end = mid - 1;
}
return false;
}
// Driver code let arr = [1, 3, 5, 7, 8, 9]; let x = 5;
if (iterativeFunction(arr, x, 0, arr.length - 1)) { console.log("Element found!"); } else { console.log("Element not found!"); }
x = 8;
if (iterativeFunction(arr, x, 0, arr.length - 1)) { console.log("Element found!"); } else { console.log("Element not found!"); }
`
Output
Element found! Element found!
**Time Complexity: O(logN).
**Auxiliary Space: O(1)
Similar Reads
- Learn Data Structures with Javascript | DSA using JavaScript Tutorial JavaScript (JS) is the most popular lightweight, interpreted programming language, and might be your first preference for Client-side as well as Server-side developments. But have you thought about using JavaScript for DSA? Learning Data Structures and Algorithms can be difficult when combined with 7 min read
- Learn Algorithms with Javascript | DSA using JavaScript Tutorial This Algorithms with Javascript tutorial is designed to help you understand and implement fundamental algorithms using the versatile JavaScript programming language. Whether you are a beginner in programming or looking to enhance your algorithmic skills, this guide will walk you through essential co 15+ min read