📜  使用二分查找求一个数的平方根的Java程序(1)

📅  最后修改于: 2023-12-03 15:22:21.913000             🧑  作者: Mango

使用二分查找求一个数的平方根的Java程序

介绍

二分查找,也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。

平方根是求一个数的二次方根,也就是说,如果x的平方等于y,则x是y的平方根。

使用二分查找算法来求平方根,就是找到一个数的平方最接近于给定数的位置。

本文将介绍如何使用Java语言实现使用二分查找求一个数的平方根。

程序实现

下面是一个使用二分查找求平方根的Java程序:

public class Main {
    public static void main(String[] args) {
        double number = 25;
        double precision = 0.00001;
        double result = sqrt(number, precision);
        System.out.println(result);
    }

    public static double sqrt(double x, double precision) {
        if (x < 0) {
            throw new IllegalArgumentException("Cannot compute the square root of a negative number");
        }
        if (x == 0 || x == 1) {
            return x;
        }

        double low = 0;
        double high = x;
        double mid;

        while (low <= high) {
            mid = (low + high) / 2;
            if (Math.abs(mid * mid - x) <= precision) {
                return mid;
            }
            if (mid * mid < x) {
                low = mid + precision;
            } else {
                high = mid - precision;
            }
        }
        return -1;
    }
}

以上代码中,首先定义了一个double类型的数字number,就是我们要求平方根的数字。

然后定义了一个double类型的precision,用于表示精度。

之后,调用了sqrt方法,该方法使用了二分查找算法来寻找一个数的平方根。在这里,我们传入了要求平方根的数字number和精度precision,以供方法使用。

sqrt方法中,首先检查要求平方根的数字是否为负数,如果是负数则抛出IllegalArgumentException异常。

然后,如果要求平方根的数字是0或1,则直接返回该数字。

接下来,使用while循环进行二分查找。首先,定义两个变量low和high,分别表示查找区间的起点和终点。然后定义一个变量mid,表示查找区间的中间点。

接着,将要求平方根的数字与mid的平方进行比较,如果相等,则返回mid。如果mid的平方小于要求平方根的数字,则更新查找区间的起点low为mid+precision,否则更新查找区间的终点high为mid-precision。

当low大于high时,结束查找,返回-1,表示没找到该数字的平方根。

总结

使用二分查找算法求平方根是一种常用的算法,该算法可以很快地找到一个数字的平方根,同时也可以通过参数来控制查找的精度。

本文介绍了如何使用Java语言实现使用二分查找求一个数的平方根。以上代码非常简洁明了,对于Java程序员来说,是学习和掌握二分查找算法的好例子。