求浮点数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;
}

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-02
  • 2021-07-11
  • 2022-12-23
  • 2021-10-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
  • 2021-09-29
  • 2022-02-25
  • 2021-05-26
相关资源
相似解决方案