穷举法与二分法
public class Test01 {
public static void main(String[] args) {
System.out.println(square(10));
System.out.println(square2(10));
}
//开放
//穷举法
static double square(double x) {
//i*i==x
double jd = 0.000001;
double i = 0.0;
while (Math.abs(i * i - x) > jd) {
i += jd / 10;
}
//( i*i-x)<=jd
return i;
}
//二分法
//数据必须有序才可使用
static double square2(double x) {
double jd = 0.000001;
double start = 0;
double end = x;
double mid = (start + end) / 2;
while (Math.abs((mid * mid - x)) > jd) {
if (mid * mid > x) {
end = mid;
} else {
start = mid;
}
mid = (start + end) / 2;
}
return mid;
}
}

浙公网安备 33010602011771号