爽了今天又刷了几题开根
挺简单的是吧
那今天就给你们展示一下怎么用二分的方法把sqrt函数写出来:
二分查找是一种在已排序的数组中查找特定元素的算法。对于求平方根的问题,可以将其转化为求某个数的平方等于给定值的问题。假设要求一个数x的平方根,可以通过不断地猜测和调整答案来逼近正确答案。
算法的思路如下:
-
定义搜索的边界,设左边界为0,右边界为x。
-
当左边界小于等于右边界时,进行二分搜索。
-
计算中间值mid,将mid的平方与x进行比较。
-
如果mid的平方等于x,那么mid就是所求的平方根,直接返回mid。
-
如果mid的平方大于x,说明mid过大,将右边界更新为mid-1。
-
如果mid的平方小于x,说明mid过小,将左边界更新为mid+1。
-
不断地进行二分搜索,直到找到满足条件的平方根。
爽了,下面是代码:
//二分手写sqrt函数
double my_sqrt(double value) {
double eps = 1e-9;
double left = 0, right = value;
double mid = 0;
double last = 0;//Keep the last rumber
if(value == 1) { //Special judgment
return 1;
}
if(value <= 0) { //Special judgment
return 0;
}
do {
if(mid > value / mid) right = mid;//Prevent overflow
else left = mid;
last = mid;
mid = left + (right - left) / 2;
} while (abs(mid - last) > eps);
return mid;
}
今天懒得翻译日语了,就这样吧
别问我为什么码风变了问就是今天换了一个编译器他的格式化自动加空格
本芝麻这么懒怎么可能主动加空格呢hhhh