巧用二分法实现数学开方(sqrt)运算

来源:互联网 发布:旧货市场淘宝 编辑:程序博客网 时间:2024/05/22 05:19

二分查找时间复杂度计算与分析

implement int sqrt(int x).
Compute and return the square root of x.

public int sqrt(int x) {        int low = 0;        int high = x;        while (low <= high) {            long mid = (low + high) / 2;//防止溢出            if (mid * mid == x)                return (int) mid;            else if (mid * mid < x)                low = (int) (mid + 1);            else                high = (int) (mid - 1);        }        return high;    }

另一种防止溢出的方案:

int mid = low + (high - low) / 2;if(mid == x / mid)    do something;else if(mid < x / mid)    do something;else    do something;
1 0
原创粉丝点击