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

[ 数据结构 ] 时间和空间复杂度

1.算法效率

算法效率分析分为两种 : ①时间效率, ②空间效率 

时间效率即为 时间复杂度 , 时间复杂度主要衡量一个算法的运行速度

空间效率即为 空间复杂度 , 空间复杂度主要衡量一个算法所需要的额外空间

2.时间复杂度

2.1 时间复杂度的概念

定义 : 再计算机科学中 , 算法的时间复杂度 是一个数学函数 , 它定量描述了 该算法的运行时间

用于衡量算法执行时间 随输入规模增长的变化趋势

2.2 大O的渐进表示法

计算func基本操作执行了多少次?

    public static void func1(int N){int count = 0;for(int i = 0;i<N;i++){for(int j = 0;j<N;j++){count++;}}for(int k = 0;k<N*2;k++){count++;}int m = 10;while((m--)>0){count++;}System.out.println(count);}

func1执行基本操作次数:

F(N) = N^2 + 2*N + 10 

实际中我们计算时间复杂度时 , 我们其实不一定要计算精确的执行次数 , 而只需要大概执行次数 , 那么我们这里使用大O的渐进表示法

O : 用于描述函数渐进行为的数学符号

2.3 推导大O阶方法

  • 用常数 1 取代运行时间中的所有加法常数
  • 再修改后的函数中 , 只保留最高阶项
  • 如果最高阶存在且不是1, 则取出这一项的系数 , 结果就是大O阶

例如: func1使用大O简静法表示后 , func1的时间复杂度为 O(N^2)

通过用大O的渐进表示法 去掉了对结果影响不大的项 , 简洁明了的表示出了执行次数

另外 有些算法还存在 时间复杂度 最好 , 最坏 , 平均的情况

最坏情况 : 任意输入规模的最大运行次数 (上界)

平均情况 : 任意输入规模的期望运行次数

最好情况 : 任意输入规模的最小运行次数 (下界)

例如: 一个长度为N的数组中寻找一个数据 X

最好情况 : 一次找到    最坏情况 : N次找到   平均情况 : N/2次找到

在实际中一般关注的是算法的 最坏运行情况 , 所以数组中搜索数据的时间复杂度为O(N)

3.空间复杂度

定义 : 是对一个算法在运行过程中临时占用空间大小的度量

用于评估算法对内存资源的消耗情况

空间复杂度计算的是 变量的个数

O(1) 常数空间

int sum(int a, int b) {int result = a + b; // 仅占用固定空间return result;
}

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

相关文章:

  • Linux中Apache与Web之虚拟主机配置指南
  • 栈和队列:数据结构中的基础与应用​
  • GaussDB 数据库架构师修炼(十三)安全管理(2)-数据库权限管理
  • 专题:2025城市NOA智能驾驶研究报告|附70+份报告PDF 汇总下载
  • Spring MVC 处理请求的完整流程详解
  • Kubernetes1.28-单Master集群部署
  • 【Vue中key属性的技术分析】
  • 智能装配线cad【8张】三维图+设计说明书
  • 安卓Fragmnet的生命周期
  • 【5】Transformers快速入门:Transformer 是啥?
  • 【接口自动化】-11-接口加密签名 全局设置封装
  • Android领域驱动设计与分层架构实践
  • TF-IDF:信息检索与文本挖掘的统计权重基石
  • 开源生态认证体系介绍
  • 当 GitHub 宕机时,我们如何协作?
  • 机器学习-集成学习(EnsembleLearning)
  • Linux 可执行程序核心知识笔记:ELF、加载、虚拟地址与动态库
  • MLOps(机器学习运维)LLMOps(大语言模型运维)介绍(通过自动化、标准化和协作优化模型的开发、部署、监控和维护流程)
  • Ubuntu与Rocky系统安装Java全指南
  • 【门诊进销存出入库管理系统】佳易王医疗器械零售进销存软件:门诊进销存怎么操作?系统实操教程 #医药系统进销存
  • 湖北手机基站数据分享
  • 当“超级高速“遇见“智能大脑“:5G-A×AI如何重塑万物智联时代
  • 双椒派E2000D开发板Linux环境配置指南
  • WireShark:非常好用的网络抓包工具
  • 【工具】通用文档转换器 推荐 Markdown 转为 Word 或者 Pdf格式 可以批量或者通过代码调用
  • 淘宝化妆品
  • Day52 Java面向对象07 类与对象总结
  • 第五章 树与二叉树
  • 腾讯云iOA:全面提升企业办公安全与效率的智能解决方案
  • 什么时候用WS(WebSocket),什么使用用SSE(Server-Sent Events)?