面试中遇到的是:给一个正数,包括浮点数,求它的开方,精度为0.01,二分查找的思路。
实现代码:
public class Sqrt {
public static void main(String[] args) {
int num = 2147395599;
System.out.println(sqrt(num));
}
private static int sqrt(int num) {
if(num==0||num==1)
return num;
long low = 0;
long high = num;
while(low<high){
long mid = (low+high)/2;
if(mid==low)
return (int)mid;
else if(mid*mid-num>0)
high=mid;
else if(mid*mid-num<0)
low=mid;
else
return (int)mid;
}
return 0;
}
}
结果:
46339