📅  最后修改于: 2023-12-03 15:22:21.913000             🧑  作者: Mango
二分查找,也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。
平方根是求一个数的二次方根,也就是说,如果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程序员来说,是学习和掌握二分查找算法的好例子。