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

【数据结构】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)

• 三种常用的时间复杂度

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

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

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

相关文章:

  • 掘金欧洲宠物经济新蓝海:比利时天然宠粮市场爆发与跨境新机遇
  • OpenSearch入门:从文档示例到查询实战
  • Linux `touch` 命令深度解析与高阶应用指南
  • 【Linux】第十七章 归档和传输文件
  • 大学量化投资课程
  • 深度剖析:YOLOv8融入UNetv2 SDI模块的性能提升之旅
  • 出现 Uncaught ReferenceError: process is not defined 错误
  • 《算法导论(第4版)》阅读笔记:p83-p85
  • MouseDown,MouseUp,LostMouseCapture的先后顺序
  • 【推荐】新准则下对照会计报表172个会计科目解释
  • Tomcat简述介绍
  • 面试题总结一
  • 静态网站部署:如何通过GitHub免费部署一个静态网站
  • 第二章:安卓端启动流程详解与疑难杂症调试手册
  • 软考 系统架构设计师系列知识点之杂项集萃(62)
  • 算法-js-最大矩形
  • FastDFS分布式文件系统架构学习(一)
  • 从零启动 Elasticsearch
  • 基于智能家居项目 ESP8266 WiFi 模块通信过程与使用方法详解
  • ArkUI-X跨平台框架接入指南
  • 复旦一校友捐赠1亿元,却不留名
  • 见微知沪|科学既要勇攀高峰,又要放低身段
  • 四个“从未如此”使巴以加沙战火绵延时间创下历史之最
  • 美国与卡塔尔签署超2435亿美元经济及军事合作协议
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 中国-拉共体论坛第四届部长级会议北京宣言