二分查找
查找范围区间为左闭右闭区间的时候,代码如下:
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long x = sc.nextInt();
// 二分法求x的平方根
if(x<2){
System.out.println(x);
return;
}
long left = 1,right = x/2;
while(left<=right){
long mid = (left+right)/2;
if(mid*mid>x){
right = mid-1;
}else if(mid*mid<x){
left = mid+1;
}else{
System.out.println(mid);
return;
}
}
// 如果没有找到,目标值在left-1和left中间,不放心可以再 加下面判断
if(left*left<x){
System.out.println(left);
}else{
System.out.println(left-1);
}
}
}