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

06多段代码复杂度合成规则

在分析一个完整的算法时,我们很少会遇到只有一个简单循环或一个简单递归的情况。
更多时候,一个算法由多个部分组成,它们可能顺序执行,可能相互嵌套,或者根据条件选择执行。这时候,我们就需要一些规则来合成这些不同部分的复杂度。

核心思想回顾

在开始学习合成规则之前,让我们快速回顾一下大O符号的核心思想:

  • 关注增长趋势: 大O符号描述的是算法运行时间或空间占用随输入规模 n 增大时的增长趋势。
  • 忽略常数项: O(2n)O(2n)O(2n)O(n)O(n)O(n)nnn 足够大时,增长趋势是相同的,因此都简化为 O(n)O(n)O(n)
  • 忽略低阶项: O(n2+n)O(n^2+n)O(n2+n)nnn 足够大时,n2n^2n2 的影响远大于 nnn,因此简化为 O(n2)O(n^2)O(n2)

相加原则(求和法则)

规则定义

如果一个算法包含多个独立的、顺序执行的代码段,那么整个算法的复杂度等于这些代码段中复杂度最高(增长最快)的那个。

规则说明

若算法A的时间复杂度为O(f(n))O(f(n))O(f(n)),算法B的时间复杂度为O(g(n))O(g(n))O(g(n)),两段代码依次执行,则整体复杂度为二者之
O(f(n))+O(g(n)) O(f(n))+O(g(n)) O(f(n))+O(g(n))
f(n)f(n)f(n)g(n)g(n)g(n)

http://www.lryc.cn/news/624728.html

相关文章:

  • 学习日志37 python
  • [优选算法专题二滑动窗口——水果成篮]
  • PyTorch数据处理工具箱(数据处理工具箱概述)
  • 【JavaEE】(16) Spring Boot 日志
  • C语言关于函数传参和返回值的一些想法
  • 《亚矩阵云手机重构出租接单:KVM 虚拟化与边缘计算驱动的设备替代技术路径》
  • Highcharts for Flutter 正式发布
  • SQL语法大全指南
  • 【Day 29 】Linux-数据库
  • 设计模式(四)——责任链模式
  • 福彩双色球第2025095期篮球号码分析
  • 19.8 《3步实现OPT-6.7B无损量化:用自定义数据集省70%显存,精度仅跌2.3%》
  • 终极方案!lightRag/graphRag离线使用tiktoken持续报错SSLError,不改源码,彻底解决!
  • 海洋牧场邂逅海洋旅游:碰撞出新业态的璀璨火花
  • 北斗安心联车辆管理系统优势分析
  • 飞机起落架轮轴深孔中间段电解扩孔内轮廓检测 - 激光频率梳 3D 轮廓检测
  • Conda技巧:修改Conda环境目录,节省系统盘空间
  • 【每天学点‘音视频’】前向纠错 和 漏包重传
  • vue从入门到精通:搭建第一个vue项目
  • 表格内容对比及标记
  • PLC无线组网实现多台RGV搬运机器人输送系统通讯案例
  • SSM从入门到实战:1.4 Spring Bean的生命周期管理
  • 【STM32】STM32H750 CubeMX 配置 USB CDC 虚拟串口笔记
  • ThinkPHP的安装运行和调试
  • MCP协议演进:从SSE到Streamable HTTP的技术革命
  • SAP ABAP IS SUPPLIED
  • 【语法糖】什么是语法糖
  • Java+Vue构建资产设备管理系统,适配移动端与后台管理,实现全生命周期管理,涵盖采购、入库、使用、维护、报废等环节,提供完整源码,便于二次开发
  • 快速搭建项目(若依)
  • CentOS 7 LAMP快速部署WordPress指南