一、二分查找
二分查找算法
二、代码
#include <stdio.h>
#include <math.h>
#define PRECISION 0.0000001
double Sqrt(double n)
{
double dblRet = 0.0;
double dblLow = 0.0;
double dblHigh = n;
double dblMiddle = 0.0;
while (dblLow <= dblHigh)
{
dblMiddle = dblLow + (dblHigh - dblLow) / 2;
if ((dblMiddle * dblMiddle - n < (PRECISION))
&& (dblMiddle * dblMiddle - n > -(PRECISION)))
{
dblRet = dblMiddle;
break;
}
else if (dblMiddle * dblMiddle > n)
{
dblHigh = dblMiddle - PRECISION / 1000;
}
else if (dblMiddle * dblMiddle < n)
{
dblLow = dblMiddle + PRECISION / 1000;
}
}
return dblRet;
}
int main()
{
double n = 0.0;
int i = 0;
for (i = 0; i < 100; i++)
{
printf("Sqrt(%-02d)=%0.6lf \t math:sqrt(%-02d)=%0.6lf\r\n", i, Sqrt(i), i, sqrt(i));
}
getchar();
return 0;
}
三、运行结果
![平方根测试](https://img-blog.csdnimg.cn/74db974e8ae64e2e95fc93f8bc1af1d4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATFlZWVNIYWk=,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)