C/C++ 求浮点数平方根
求浮点数x的平方根y,精度误差e。
1、显然y <= x,即在 [0, x] 中查找一个y,使得满足 | y * y - x | <= e,很容易想到二分查找,时间复杂度是O(logx)。
float Sqrt(float x)
{
const float e = 0.0001;
float low = 0, high = x, y = (low + high) / 2;
while (y * y - x > e || y * y - x < -e)
{
if (y * y - x > e)
{
high = y; // 大了
}
else if(y * y - x < -e)
{
low = y; // 小了
}
y = (low + high) / 2;
}
return y;
}

浙公网安备 33010602011771号