穷举法与二分法

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;
  }
}

 

posted @ 2021-10-19 09:58  HelelLucifer  阅读(205)  评论(0)    收藏  举报