本文主要是介绍x的平方根(二分查找实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
设计函数int sqrt(int x)
,计算 x 的平方根。
import java.util.Scanner;public class MySqrt public static int sqrt(int n){int left=1,right=(n+1)/2;while(left<right){int mid=(left+right)/2;int result= mid*mid;// int result2=(mid+1)*(mid+1);if(result==n){return mid;}else if(result>n){right=mid-1;}else if(result<n){left=mid+1;}}int temp=right*right;if(temp>n)return right-1;else return right;}public static void main(String[] args) {//System.out.println(sqrt(100));;Scanner sc=new Scanner(System.in);String s;while((s=sc.nextLine())!=null){int value=Integer.parseInt(s);System.out.println(sqrt(value));}}}
输入格式
输入一个 整数 x,输出它的平方根。直到碰到文件结束符(EOF
)为止。
输出格式
对于每组输入,输出一行一个整数,表示输入整数的平方根。
样例输入
1 2 3 4 5 6 7 8 9
样例输出
1 1 1 2 2 2 2 2 3
思路:求解x的平方根,可以通过二分查找来实现,设置两个边界点,left和right,那么平方根的值就在这里面,每次取left和right的中心点,即为和的二分之一,比较中心点平方和给定数的大小,如果中心点平方大一些,取值区间必然在左区间,那么置右边界right为mid-1,否则置左边界left为mid+1,或者中心点平方与给定点相等,那么直接返回mid值即可,如果循环都结束了,还没有返回值,如给定数8,最后不会有返回值,因为没有8以下的数字的平方等于8,这时left=right的值为3,然后对right的值进行判断,如果right的平方大于8返回right-1;否则返回right;
这篇关于x的平方根(二分查找实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!