二分查找---求开方
Posted yjxyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找---求开方相关的知识,希望对你有一定的参考价值。
求开方
Input: 4
Output: 2
Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part
题目描述:
??给定一个整数,求该整数的开方数。
思路分析:
??一个数 x 的开方 sqrt 一定在 0 ~ x 之间,并且满足 sqrt == x / sqrt。可以利用二分查找在 0 ~ x 之间查找 sqrt。
??对于 x = 8,它的开方是 2.82842...,最后应该返回 2 而不是 3。在循环条件为 l <= h 并且循环退出时,h 总是比 l 小 1,也就是说 h = 2,l = 3,因此最后的返回值应该为 h 而不是 l。
代码:
public int mySqrt(int x)
if(x<=1)
return x;
int l=1;
int h=x;
while(l<=h)
int mid=l+(h-l)/2;
int sqrt=x/mid;
if(sqrt==mid)
return mid;
else if(mid>sqrt)
h=mid-1;
else
l=mid+1;
return h;
以上是关于二分查找---求开方的主要内容,如果未能解决你的问题,请参考以下文章