当前位置: 首页 > news >正文

【每日算法C#】x 的平方根 LeetCode

国庆假期结束,冲!

1. 方法对比:二分查找法 vs 牛顿迭代法

(1) 二分查找法
public int MySqrt(int x)
{if (x == 0) return 0;int left = 1;int right = x;while (left <= right){int mid = left + (right - left) / 2;long square = (long)mid * mid;if (square == x)return mid;else if (square < x)left = mid + 1;elseright = mid - 1;}return right;
}
(2) 牛顿迭代法
public int MySqrt(int x)
{if (x == 0) return 0;long r = x;while (r * r > x)r = (r + x / r) / 2;return (int)r;
}

2. 对比分析

特性二分查找法牛顿迭代法
时间复杂度O(log n)O(log log n)(二次收敛)
迭代次数最多约31次(对于int范围)通常少于10次(对于int范围)
收敛速度线性收敛二次收敛(指数级加速)
实现难度较简单更简洁
内存占用需要维护左右边界只需单个变量
适用场景通用查找算法数值计算优化
精度控制精确整数解精确整数解

3. 牛顿迭代法的由来与数学原理

(1) 历史背景

牛顿迭代法由英国科学家艾萨克·牛顿在17世纪提出,最初用于求解多项式方程的根。约瑟夫·拉弗森在1690年将其推广,因此也称为牛顿-拉弗森方法。

(2) 数学推导

求解平方根等价于求方程:
f(r) = r² - x = 0 的根

使用泰勒级数一阶展开:

解得:

代入 f(r) = r² - x 和 f'(r) = 2r:

更新公式:

简化后得到:

(3) 几何解释

牛顿法本质是切线逼近法

  1. 在曲线上任选一点 (rₙ, f(rₙ))
  2. 作该点的切线
  3. 切线与x轴的交点作为新估计值 rₙ₊₁
  4. 重复直到收敛

4. 为什么牛顿法更快?

  1. 超线性收敛:误差 eₙ₊₁ ≈ (1/2)eₙ²
  2. 自适应步长:远离目标时步长大,接近目标时步长小
  3. 利用导数信息:通过斜率预测更优解

5. 注意事项

  1. 初始值选择:牛顿法对初始值敏感(但平方根问题中取 x 是安全的)
  2. 整数除法:在整数运算中 x/r 会截断,但不影响最终结果
  3. 边界处理:x=0 需要单独处理(两种方法都做了)

6. 总结

方面胜出方原因
理论速度牛顿迭代法二次收敛 vs 线性收敛
代码简洁性牛顿迭代法5行 vs 10行
内存效率牛顿迭代法单变量 vs 多变量
可理解性二分查找法更直观
数值稳定性平手整数运算中表现相当

推荐选择:牛顿迭代法更优,尤其在大数计算中优势明显(如 x=2³¹-1 时,牛顿法只需约10次迭代,二分法需31次)

http://www.dtcms.com/a/467063.html

相关文章:

  • HT513:低成本高适配的 I2S 输入单声道 D 类音频功率放大器深度解析
  • Roo Code常见问题
  • 怎么创建网站 免费的改版百度不收录网站
  • 教育网站官网深圳小程序开发设计
  • win11 hyper-v 搭建集群虚拟机(用于k8s)
  • 不同材质的实验室试管有何优缺点?哪个更适合你的实验?
  • 高州市网站建设如何做自己的小说网站
  • 建设网站注意实现佛山网站建设公司招聘
  • 贵州 做企业网站的流程页面布局在哪里找到
  • Python爬虫绕过网站验证的完整实战框架(专业级·高实用性)
  • 番禺怎样优化网站建设网站开发的项目开发计划
  • 七段 S 曲线速度规划方法
  • 广州正规网站建设哪家好上哪里建设个人网站
  • 做电商需要哪些网站有哪些网页的开发流程
  • UVa 12143 Stopping Doom‘s Day
  • 搭建 Python 开发环境(Python 运行环境、PyCharm 开发工具)
  • 【Unity3D脚本与系统设计8】时间计时器
  • 网站开发实践体会兴义网站建设
  • 网页小游戏的网站网站国外建设
  • 招聘seo专员资阳优化团队信息
  • 无锡营销型网站价格wordpress 搜索用户名
  • 【开题答辩全过程】以 TeamW动漫网站为例,包含答辩的问题和答案
  • 西安GEO优化专家杨建允:AI搜索优化,从语义理解到全域引流
  • 网站首页动画模板邯郸人才网
  • 时序预测模型Timesnet(项目报告)
  • 成都网站网页制作网站服务器做缓存
  • 网站设计与规划seo专业培训班
  • asp.net企业网站设计建站语言有哪些
  • VUE 3.0项目文件结构解析及项目启动流程介绍
  • 机器学习入门(2)-KNN,朴素贝叶斯,决策树,随机森林