Java Program to Find Cube Root of a number using Binary Search


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

Input-Output Examples

Example-1: 
Input: 64 
Output: 4 

As, the cube root of 64 is 4, the output is 4.

Example-2: 
Input: 216
Output: 6  

As, the cube root of 216 is 6, the output is 6.

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 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 Cube Root using Binary Search

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

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

STEP 3 − find the value of mid * mid*mid, if mid * mid*mid == n then return mid value.

STEP 4 − If mid value is less than n then low=mid+1 else high =mid-1

STEP 5 − Repeat from steps 2 to 4 until we find the value.

Example

In this example, we find the cube root of a value using Binary Search Algorithm. We created a custom class ‘BinarySearchCbrt’ and implemented the binary search code for finding the cuberoot of a number code in ‘cuberoot’ function. Now, create the custom Class object and initialise a variable called ‘number’ with an integer number and using the class object class the cuberoot’ function is called and thus the desired output is displayed.

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

Output

Cube root of 64 = 4 

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

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

Updated on: 10-Apr-2023

536 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements