1. 程式人生 > >15、【常見算法】實現sqrt函數

15、【常見算法】實現sqrt函數

str -s 整數 tro lse 思想 寫代碼 right spa

問題:手寫代碼實現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 }

15、【常見算法】實現sqrt函數