Java Program to find Square Root of a number using Binary Search


Square Root of a number is an integer value when multiplied by itself, gives the original number. In this article, we are going to write a java program to find the square root of a number using binary search. Finding square root of a number is one of the application of the binary search algorithm. We will discuss in detail how we calculate the square root using binary search in this article.

Examples

Input: 64 
Output: 8

As, the square root of 64 is 8, the output is 8.

Input: 16
Output: 4  

As, the square root of 16 is 4, the output is 4.

Binary Search

Binary search is an algorithm used to find an element i.e., key in a sorted array. Binary algorithm works as below −

  • Let us say that array is ‘arr’. Sort the array in ascending or descending order.

  • Initialize low = 0 and high = n-1 (n = number of elements) and calculate middle as middle = low + (high-low)/2. If arr[middle] == key then return middle i.e., middle index of array.

  • Else if the key value is less than the arr[middle] element set the high index as middle index-1 or if the key value is more than middle element set the low index as middle index+1

  • Continue the binary search until the element that needs to be find is found.

  • If low is greater than high than return false directly as key is not present in the array ‘arr’.

Example to find Key using Binary Search

Problem − Given a sorted array of integers arr = [1, 3, 5, 7, 9, 11], find the index of the element i.e., key = 7 using binary search.

Solution

  • Initialize the low = 0 and the high= 5 (the last index of the array).

  • The first iteration of the while loop gives us the middle index mid = low+ (high-low)/2

  • mid = 0+(5-0)/2 = 2

  • The value of arr[mid] is 5, which is less than the key value 7. So, we update the low= mid+1 = 3.

  • The second iteration of the while loop gives us the middle index mid = 4 by using the low+ (high-low)/2.

  • The value of arr[mid] is 9, which is greater than the key value 7. So, we update the high= 3 (mid - 1).

  • The third iteration of the while loop gives us the middle index mid = 3.

  • The arr[mid] is 7, which is equal to the key value. So, we return the middle index, which is 3.

Thus, the index of the key = 7 in the given array is 3, which we found using the binary search algorithm.

Algorithm to find the Square Root using Binary Search

  • Consider a number ‘n’ and initialise low=0 and right= n (given number).

  • Find mid value of low and high using mid = low + (high-low)/2.

  • find the value of mid * mid, if mid * mid == n then return mid value.

  • If mid value is less than n then low=mid+1 else high =mid-1

  • Repeat from steps 2 to 4 until we find the value.

Example 1: Using Binary Search

In this example, we create a custom class ‘BinarySearchSqrt’ and implement the binary search code for finding the square root of a number code in ‘sqrt’ function. Now, create the custom Class object and initialise a variable called ‘number’ with an integer number and using the class object class the ‘sqrt’ function is called and thus the desired output is displayed.

//Java Program to find Square root of a number using Binary Search
import java.util.*;
class BinarySearchSqrt {
   public  int sqrt(int number) {
      int low = 0;
      int high = number;
      while (low <= high) {
         int mid = (low + high) / 2;
         int square = mid * mid;
         if (square == number) {
            return mid;
         } else if (square < number) {
            low = mid + 1;
         } else {
            high = mid - 1;
         }
      }
      return 0;
   }
}
public class Main {
   public static void main(String[] args) {
      int n = 64;
      BinarySearchSqrt Obj  = new  BinarySearchSqrt();
      int result= Obj.sqrt(n);
      System.out.println("Square root of " + n + " = " + result);
   }
}

Output

Square root of 64 = 8

Time Complexity: O(NlogN) Auxiliary Space: O(1)

Example 2: Using Binary Search and Math.pow()

In the below example, we created a custom class ‘BinarySearchSqrt’ and implemented the binary search code for finding the square root of a number code in ‘sqrt’ function. The ‘sqrt’ function uses the in-built function ‘Math.pow()’ to calculate the square of a number .Now, create the custom Class object and initialise a variable called ‘number’ with an integer number and using the class object class the ‘sqrt’function is called and thus the desired output is displayed.

//Java Program to find Square root of a number using Binary Search and Math.pow()
import java.util.*;
class BinarySearchSqrt {
   public  int sqrt(int number) {
      int low = 0;
      int high = number;
      while (low <= high) {
         int mid = (low + high) / 2;
         if (Math.pow(mid,2) == number) {
            return mid;
         } else if (Math.pow(mid,2) < number) {
            low = mid + 1;
         } else {
            high = mid - 1;
         }
      }
      return 0;
   }
}
public class Main {
   public static void main(String[] args) {
      int n = 64;
      BinarySearchSqrt Obj  = new  BinarySearchSqrt();
      int result= Obj.sqrt(n);
      System.out.println("Square root of " + n + " = " + result);
   }
}

Output

Square root of 64 = 8

Time Complexity: O(NlogN) Auxiliary Space: O(1)

Thus, in this article we have discussed how to find the square root of a number using Binary Search Algorithm in Java.

Updated on: 10-Apr-2023

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements