Skip to content
Related Articles

Related Articles

Java program to Find the Square Root of a Number using Binary Search
  • Last Updated : 03 Mar, 2021

Given a non-negative number find the square root of a number using the binary search approach.

Examples :

Input: x = 16
Output: 4
Explanation:  The square root of 16 is 4.

Input: x = 5
Output: 2
Explanation:  The square root of 5 lies in between
2 and 3 so floor of the square root is 2.

Naive Approach:

  • Check the square of every element till n and store the answer till the square is smaller or equal to the n

Java




// Java program to Find the square root of given numbers
// by brute force technique
  
import java.io.*;
  
class GFG {
    static int cuberoot(int n)
    {
        int ans = 0;
  
        for (int i = 1; i <= n; ++i) {
            
            // checking every number cube
            if (i * i <= n) {
                ans = i;
            }
        }
        return ans;
    }
    public static void main(String[] args)
    {
        // Number
        int number = 16;
        
        // Checking number
        int cuberoot = cuberoot(number);
        System.out.println(cuberoot);
    }
}
Output
4

SpaceComplexity: O(1)



TimeComplexity: O(n)

Efficient Approach (Binary Search): Binary Search used Divide and Conquer approach that makes the complexity is O(logn).

Algorithm:

  • Initialize left=0 and right =n
  • Calculate mid=left+(right-left)/2
  • If mid*mid is equal to the number return the mid.
  • If mid*mid is less than the number store the mid in ans since this can possibly be the answer and increase left=mid+1 and now check in the right half.
  • If mid*mid is more than the number and decrease the right=mid-1 since the expected value is lesser therefore we will now look into the left half part or will be scanning the smaller values.
  • Return the answer

Implementation:

Java




// Java program to Find the square root of given numbers
// using Binary search
  
// Importing libraries
import java.io.*;
import java.util.*;
class GFG {
    
    // Function to find cuberoot
    static int squareeroot(int number)
    {
        // Lower bound
        int left = 1;
        
        // Upper bound
        int right = number;
  
        int ans = 0;
        while (left <= right) {
            
            // Finding the mid value
  
            int mid = left + (right - left) / 2;
            
            // Checking the mid value
            if (mid * mid == number) {
                return mid;
            }
  
            // Shift the lower bound
            if (mid * mid < number) {
                left = mid + 1;
                ans = mid;
            }
            
            // Shift the upper bound
            else {
                right = mid - 1;
            }
        }
        
        // Return the ans
        return ans;
    }
    public static void main(String[] args)
    {
        int number = 15;
        System.out.println(squareroot(number));
    }
}
Output
3

Time Complexity: O(logn)

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :