zoukankan      html  css  js  c++  java
  • LeetCode-Sqrt(x)

    问题:实现  int sqrt(int x).

    这里给出两种实现方法:一是二分搜索,二是牛顿迭代法。

    • 二分搜索
     1 int sqrt(int x) {
     2     long long i = 0;
     3     long long j = x / 2 + 1;
     4     while (i <= j)
     5     {
     6         long long mid = (i + j) / 2;
     7         long long sq = mid * mid;
     8         if (sq == x) return mid;
     9         else if (sq < x) i = mid + 1;
    10         else j = mid - 1;
    11     }
    12     return j;
    13 }
    • 牛顿迭代法
     1 int sqrt(int x) {
     2     if (x == 0) return 0;
     3     double last = 0;
     4     double res = 1;
     5     while (res != last)
     6     {
     7         last = res;
     8         res = (res + x / res) / 2;
     9     }
    10     return int(res);
    11 }
    • 此外,如果返回值不是整型
     1 double sqrt(double x) {
     2     if (x == 0) return 0;
     3     double last = 0.0;
     4     double res = 1.0;
     5     while (res != last)
     6     {
     7         last = res;
     8         res = (res + x / res) / 2;
     9     }
    10     return res;
    11 }

    参考:http://www.cnblogs.com/AnnieKim/archive/2013/04/18/3028607.html

  • 相关阅读:
    第七周作业
    第六周作业
    CSS
    12 week work
    7 week work
    6 week work 3
    6 week work 2
    6 week work 1
    常用的网络服务小总结
    网络基础设置
  • 原文地址:https://www.cnblogs.com/MazeHong/p/7337898.html
Copyright © 2011-2022 走看看