Problem :Write a function to find square root of a number
/*
Steps:
Use binary search to find the square root.
1. Initialize, start = 0, end = number, mid = (start+end)/2.
2. Set prevMid = 0, as the previous mid value.
3. Find diff = absolute difference between prevMid and mid.
4. While mid is not the square root of number (i.e. mid*mid != number) and difference diff is greater than 0.0005,
repeat the following steps:
a. If mid*mid > number, then the square root will be less than mid. So, set end = mid.
b. Else, the square root will be greater than mid. So, set start = mid.
c. Set prevMid = mid
d. Re-evaluate mid = (start+end)/2.
e. Re-evaluate diff from prevMid and mid.
*/
-
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.tvidushi; | |
public class Squareroot { | |
/* | |
Steps: | |
Use binary search to find the square root. | |
1. Initialize, start = 0, end = number, mid = (start+end)/2. | |
2. Set prevMid = 0, as the previous mid value. | |
3. Find diff = absolute difference between prevMid and mid. | |
4. While mid is not the square root of number (i.e. mid*mid != number) and difference diff is greater than 0.0005, | |
repeat the following steps: | |
a. If mid*mid > number, then the square root will be less than mid. So, set end = mid. | |
b. Else, the square root will be greater than mid. So, set start = mid. | |
c. Set prevMid = mid | |
d. Re-evaluate mid = (start+end)/2. | |
e. Re-evaluate diff from prevMid and mid. | |
*/ | |
public static void main(String[] args) { | |
int num = 1090; | |
int start = 0; | |
int end = num; | |
int mid = (start +end)/2; | |
int premid =0; | |
while(mid*mid != num){ | |
if( (Math.abs(mid -premid) <0.0005)){ | |
break; | |
} | |
if(mid*mid>num){ | |
end = mid; | |
premid = mid; | |
mid = (start +end)/2; | |
}else{ | |
start = mid; | |
premid = mid; | |
mid = (start +end)/2; | |
} | |
} | |
System.out.println("square root is "+mid); | |
} | |
} |
-
-
-