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

【数据结构】1-3 算法的时间复杂度

数据结构知识点合集:数据结构与算法

• 知识点

在这里插入图片描述

• 时间复杂度的定义

1、算法时间复杂度

  事前预估算法时间开销T(n)与问题规模 n 的关系(T 表示 “time”)

2、语句频度

  算法中语句的执行次数

在这里插入图片描述

  对于以上算法,语句频度:

    ① ——1次 ② ——3001次 ③④ ——3000次 ⑤ ——1次

    T(3000) = 1 + 3001 + 2*3000 + 1

  时间开销与问题规模 n 的关系:

    T(n)=3n+3

  大O记号表示算法的一种渐近时间复杂度;大O表示“同阶”,同等数量级。即:当 n->∞时,二者之比为常数

在这里插入图片描述

  结论1:可以只考虑阶数高的部分

  结论2:问题规模足够大时,常数项系数也可以忽略

• 时间复杂度的计算规则

1、加法规则

T(n) = T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n), g(n)))

  多项相加,只保留最高阶的项,且系数变为1

2、乘法规则

T(n) = T1(n)×T2(n) = O(f(n))×O(g(n)) = O(f(n)×g(n))

  多项相乘,都保留

3、常见时间复杂度的比较

O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

  常<对<幂<指<阶

4、顺序执行的代码只会影响常数项,可以忽略

5、只需挑循环中的一个基本操作分析它的执行次数与 n 的关系即可

6、如果有多层嵌套循环,只需关注最深层循环循环了几次

例:计算以下算法的时间复杂度 T(n):

在这里插入图片描述

  设最深层循环的语句频度(总共循环的次数)为 x,则由循环条件可知,循环结束时刚好满足 2^x > n

  x = log_2(n) + 1

  T(n) = O(x) = O(log_(2)n)

• 三种常用的时间复杂度

最坏时间复杂度:最坏情况下算法的时间复杂度

平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间

最好时间复杂度:最好情况下算法的时间复杂度

http://www.xdnf.cn/news/6943.html

相关文章:

  • Zookeeper 入门(二)
  • Elasticsearch基础篇-java程序通过RestClient操作es
  • HarmonyOS 影视应用APP开发--配套的后台服务go-imovie项目介绍及使用
  • [创业之路-361]:企业战略管理案例分析-2-战略制定-使命、愿景、价值观的失败案例
  • VueUse/Core:提升Vue开发效率的实用工具库
  • 牛客网NC210769: 字母大小写转换问题解析
  • 灵光一现的问题和常见错误1
  • c++ 仿函数
  • [Android] 奇妙扫描 V1.0.7
  • Linux系统之----重定向
  • 基于OpenCV的SIFT特征和FLANN匹配器的指纹认证
  • 泛微对接金蝶云星空实战案例技术分享
  • C++:C++内存管理
  • DeerFlow试用
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据添加修改删除操作
  • 使用python进行人员轨迹跟踪
  • 打造动效按钮平台 ButtonCraft:我和 CodeBuddy 的协作旅程
  • Nginx应用场景详解与配置指南
  • 源码安装gperftools工具
  • AI Agent | Coze 插件使用指南:从功能解析到实操步骤
  • 湖北理元理律师事务所:债务优化中的双维支持实践解析
  • 【HCIA】聚合VLAN
  • 蓝牙HFP协议概述
  • 开源项目实战学习之YOLO11:12.1 ultralytics-models-sam-blocks.py源码
  • 【Spring】Spring的请求处理
  • Spring-boot初次使用
  • 2.单链表两数相加(java)
  • 记录算法笔记(2025.5.17)验证二叉搜索树
  • 题单:表达式求值1
  • LVGL- Calendar 日历控件