Binary Search In JavaScript - GeeksforGeeks

09 Feb, 2022
Binary Search is a searching technique which 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.In this article, the implementation of Binary Search in Javascript is discussed using both iterative and recursive ways.Given a sorted array of numbers. The task is to search for a given element in the array using Binary search.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. 
Recursive Approach :  
BASE CONDITION: If starting index is greater than ending index return false.Compute the middle index.Compare the middle element with 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.
BASE CONDITION: If starting index is greater than ending index return false.
Compute the middle index.
Compare the middle element with 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.
Below is the implementation of Binary Search (Recursive Approach) in JavaScript:  
javascript
<script>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 codelet arr = [1, 3, 5, 7, 8, 9];let x = 5;  if (recursiveFunction(arr, x, 0, arr.length-1))    document.write("Element found!<br>");else document.write("Element not found!<br>");  x = 6;  if (recursiveFunction(arr, x, 0, arr.length-1))    document.write("Element found!<br>");else document.write("Element not found!<br>");</script>                                     
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.Below is the implementation of Binary Search (Iterative Approach) in JavaScript:  
javascript
<script>// Iterative function to implement Binary Searchlet 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 codelet arr = [1, 3, 5, 7, 8, 9];let x = 5;  if (iterativeFunction(arr, x, 0, arr.length-1))    document.write("Element found!<br>");else document.write("Element not found!<br>");  x = 6;  if (iterativeFunction(arr, x, 0, arr.length-1))    document.write("Element found!<br>");else document.write("Element not found!<br>");</script>                                     
Output:  
Element found!
Element not found!
Time Complexity: O(logN).Auxiliary Space: O(1)  
nidhi_biet
pankajsharmagfg
peterhauke
Binary Search
Technical Scripter 2018
Algorithms
Divide and Conquer
JavaScript
Searching
Technical Scripter
Searching
Divide and Conquer
Binary Search
Algorithms
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
DSA Sheet by Love Babbar
Quadratic Probing in Hashing
SCAN (Elevator) Disk Scheduling Algorithms
K means Clustering - Introduction
Program for SSTF disk scheduling algorithm
Merge Sort
QuickSort
Binary Search
Maximum and minimum of an array using minimum number of comparisons
Program for Tower of Hanoi