二分法求平方根

个人解题思路,仅供参考:

import java.util.Date;

public class Test {

    /**
     * 实现函数 int sqrt(int x).
     * 计算并返回x的平方根(向下取整)
     */
    public static void main(String[] args) {
        int n = 999999999;
        System.out.println(new Date());
        System.out.println(sqrt(n));
        System.out.println(new Date());
    }

    /**
     * 二分法
     * @param x int整型
     * @return int整型
     */
    public static int sqrt (int x) {
        if(x == 1) return 1;
        long min = 1,max = x, arg = x/2;
        for (;arg>min&&arg<max;arg=(min+max)/2) {
            if (arg*arg==x) return (int)arg;
            else if (arg*arg<x) min = arg;
            else max = arg;
        }
        return (int)arg;
    }
}

运行结果:

posted @ 2021-03-05 16:44  时间会有答案  阅读(316)  评论(0编辑  收藏  举报