求一个非负整数的平方根:
int mySqrt(int x) { //二分法 int left=1; int right=x/2; int last_mid;//就是要有这个变量 if(x<2) return x; while(left<=right){ const int mid=(left+right)/2;//就是const //就要是这个顺序 if(x/mid>mid){ left=mid+1; last_mid=mid; } else if(x/mid<mid) right=mid-1; else return mid; } return last_mid; }
方法二:其实就是left和right的取值不同
int low = 0, high = 46341, mid = 0; //int的最大值的平方根。 while(low <= high) { if (mid == low + (high-low)/2) { break; } mid = low + (high-low)/2; int square = mid * mid; if(square == x) { return mid; } else if(x > square){ low = mid; } else { high = mid; } } return mid;