zoukankan      html  css  js  c++  java
  • x的平方根

    题目:

    思路:

    第一种方法:利用二分查找的思想。判断一个数的中间值的平方是不是等于这个数是的话直接返回,否则的话根据middle^2和x的大小确定Low和high的值。这里有注意的一个点就是while的判断条件,如果high-low>1的话才可以继续循环。否则的话会陷入死循环。

    以下是第一种方法的java代码:

    import java.util.Random;
    
    public class findsqrt {
        public int my_sqrt(int x){
            int result = 0;
            int low = 0;
            int high = x;
            while((high-low)>1){
                int middle = low + (high - low)/2;
                int middle_power = middle*middle;
                if(middle_power == x){
                    return middle;
                }else if(middle_power < x){
                    low = middle;
                }else{
                    high = middle;
                }
            }
            result = low;
            return result;
        }
    //这是一个简单的测试代码,结果表明该代码是正确的
    public static void main(String[] args){ Random rand = new Random(); findsqrt fs = new findsqrt(); int times = 1000; int x = 0; int right = 0; for(int i=0; i<times; i++){ x = rand.nextInt(10000); int result = fs.my_sqrt(x); int real = (int)Math.floor(Math.sqrt(x)); if(result == real){ right++; } } System.out.print((double)right/times); // System.out.println(fs.my_sqrt(8)); } }
  • 相关阅读:
    leetcode680
    leetcode558
    leetcode840
    leetcode703
    leetcode836
    leetcode704
    leetcode849
    leetcode707
    2019-10-26-Inno-Setup-安装包脚本-Run-的-Flags-标记
    2019-8-30-C#-从零开始写-SharpDx-应用-笔刷
  • 原文地址:https://www.cnblogs.com/whatyouknow123/p/9245864.html
Copyright © 2011-2022 走看看