阿牧路泽

哪有那么多坚强,无非是死扛罢了
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

15、【常见算法】实现sqrt函数

Posted on 2018-10-22 17:45  阿牧路泽  阅读(366)  评论(0编辑  收藏  举报

问题:手写代码实现sqrt函数,即求一个整数的平方根

分析:二分查找思想

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int sqrt(int x)
 6 {
 7     long left = 0;
 8 
 9     if(x == 1)
10         return 1;
11     long right = x;
12 
13     long mid = left + (right - left)/2;
14     while(left + 1 < right)
15     {
16         if(x > mid * mid)
17         {
18             left = mid;
19         }
20         else if(x < mid * mid)
21         {
22             right = mid;
23         }
24         else
25         {
26             return mid;
27         }
28         mid = left + (right - left)/2;
29     }
30     return left;
31 }
32 
33 int main()
34 {
35     cout << "144 的平方根为:" << sqrt(144) << endl;
36     return 0;
37 }