开方算法

数字开方,求平方根算法

二分查找

大致的逻辑是这样的:

比如对6求开方
初始化 low=0,high=6

  1. mid=(low+hight)/6=3,3*3 = 9 > 6,那么上限high = 3,
  2. mid =(0+3)/2=1.5, 1.5*1.5 = 2.25 < 6,那么更新下限 low = 1.5
  3. mid = (low+high)/2=2.25
    然后接着更新上限或下限,直到误差在一定范围之内,就是得到的值

int my_sqrt(int x){
    if(x==0||x==1)
        return x;
    
    double error=1;
    double mid;
    double low = 0;
    double high = x;
    double tmp_res;

    while(error>0.00001){
        mid = (low+high)/2.0;
        tmp_res = mid*mid;
        error = abs(tmp_res - x);

        if(tmp_res>x)
            high = mid;
        else
            low = mid;

    }

    return int(mid);
posted @ 2020-09-04 17:57  real-zhouyc  阅读(506)  评论(0)    收藏  举报