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

例题:求算法的时间复杂度

x=n; // n>1
y=0;
while(x>=(y+1)*(y+1))
y++;

算法行为解析

  1. 初始化x = n(n > 1),y = 0
  2. 循环条件while (x >= (y+1)*(y+1))
  3. 循环体:每次迭代中 y 递增 1。

目标:找到最大的整数 y,使得 (y+1)2≤n(y+1)2≤n。


循环次数分析

  • 终止条件:当 (y+1)2>n(y+1)2>n 时,循环结束。
  • 最终 y 的值:满足 y≤n−1<y+1y≤n​−1<y+1,即 y=⌊n⌋y=⌊n​⌋。
  • 循环次数:等于最终的 y 值,即循环执行了 ⌊n⌋⌊n​⌋ 次。

举例

  • 若 n=16n=16,则 ⌊16⌋=4⌊16​⌋=4,循环执行 4 次。
  • 若 n=15n=15,则 ⌊15⌋=3⌊15​⌋=3,循环执行 3 次。

时间复杂度推导

  • 每次循环操作(条件判断和 y++)的时间复杂度为 O(1)O(1)。
  • 总循环次数为 ⌊n⌋⌊n​⌋,与 nn​ 同阶。
  • 因此,时间复杂度为 O(n)O(n​)。

数学严谨性验证

设循环次数为 kk,则结束时满足:
k2≤n<(k+1)2k2≤n<(k+1)2
解得 k=⌊n⌋k=⌊n​⌋,故时间复杂度严格为 Θ(n)Θ(n​)。


结论

算法的时间复杂度为 O(n)O(n​),精确表示为 Θ(n)Θ(n​)

相关文章:

  • ollama stream“:True django如何返回数据
  • JS宏实例:数据透视工具的制作(四)
  • Nginx稳定版最新1.26.2源码包安装【保姆级教学】
  • L0G3000 Git 基础知识
  • 栈,优先级队列,map,set
  • Python——生成AIGC图像
  • 使用 AIStor 和 OpenSearch 增强搜索功能
  • java项目之学术成果管理系统源码(ssm+前端+mysql)
  • 基于契约理论的竞争性组织数据共享安全激励机制matlab模拟与仿真
  • 使用Python结合`stable-baselines3`库(包含PPO和TD3算法)以及`gym`库来实现分层强化学习的示例代码
  • 0.1 量海航行:量化因子列表汇总(持续更新)
  • 项目设置内网 IP 访问实现方案
  • leecode 刷题感悟-- 哈希表
  • Kafka Connect 功能介绍
  • 本地部署 DeepSeek + Dify,构建自己的AI能力
  • 为AI聊天工具添加一个知识系统 之113 详细设计之54 Chance:偶然和适配 之2
  • 云计算如何解决延迟问题?
  • 数字内容体验驱动用户参与度提升的关键路径
  • 日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(10): になります :表示从一种状态转变为另一种状态,“变得……”“成为……”
  • Spark提交任务
  • 打电话沟通做网站/360seo关键词优化
  • 武汉网站建设工作室/宁波网络推广产品服务
  • wordpress 个人简介/seo是啥意思
  • 有主体新增网站/谷歌账号注册入口官网
  • 做原油看哪个网站/最近新闻小学生摘抄
  • 北京企业建站程序/网页搜索引擎大全