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

1-时间复杂度和空间复杂度

为了找到最适合当前问题而估量“算法”的评价s

时间复杂度空间复杂度
执行效率:根据算法编写出的程序,执行时间越短,效率就越高占用的内存空间:不同算法编写出的程序,执行时占用的内存空间也不相同。如果实际场景中仅能使用少量的内存空间,就要优先选择占用空间最少的算法

时间复杂度(时间复杂度用来预估算法的执行时间)

时间复杂度计算的执行步骤:

  1. 统计算法中各个步骤的执行次数
  2. 简化算法的执行次数(类似数学中的“求导”)
  3. 用大 O 标记法表示算法的时间复杂度 O (频度)

常用的几种时间复杂度的比较:

O( 1 ) < O( log(n) ) < O( n ) < O( n^2 ) < O( n^3 ) < O( 2^n )

空间复杂度(空间复杂度用来估算一个算法执行时占用的内存大小)

 空间复杂度计算的主要因素:

  • 程序代码本身所占用的存储空间
  • 如果需要输入输出数据,也会占用一定的存储空间
  • 运行过程中,可能还需要临时申请更多的存储空间(这种影响比较大)

空间复杂度的估算方法(按额外申请的算)
如果算法中额外申请的内存空间不受用户输入值的影响(是一个固定值),那么该算法的空间复杂度:O(1)
如果随着输入值 n 的增大,算法申请的存储空间成线性增长,则程序的空间复杂度是O(n)
如果随着输入值 n 的增大,程序申请的存储空间成 n^2 关系增长,则程序的空间复杂度用O(n^2)
如果随着输入值 n 的增大,程序申请的存储空间成 n^3 关系增长,则程序的空间复杂度用O(n^3)

(多数场景中,挑选 “好” 算法往往更注重的是时间复杂度,空间复杂度只要处于一个合理的范围即可)

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

相关文章:

  • EtherCAT主站SOEM -- 3 -- SOEM之ethercatconfig.h/c文件解析
  • 洗地机哪个品牌好?家用洗地机选购攻略
  • Java数组的定义与常用使用方法
  • [计算机网络]认识“协议”
  • “Notepad++“ 官网地址
  • 基于单片机的自动感应门设计
  • 【密评】商用密码应用安全性评估从业人员考核题库(二十-完结)
  • Tigger绕过激活锁/屏幕锁隐藏工具,支持登入iCloud有消息通知,支持iOS12.0-14.8.1。
  • VueX mapState、mapGetters、mapActions和mapMutaions 的使用
  • GMP标准的制药级层流细胞实验室核心要点
  • [免费] 适用于 Windows的10 的十大数据恢复软件
  • 【halcon踩坑】区域为空但个数是1
  • 第二十四章 BEV感知系列一(车道线感知)
  • C++入门讲解第一篇
  • 项目实战:分页功能实战
  • AI人工智能大模型应用如何落地?
  • 【优选算法系列】第一节.栈的简介(1047. 删除字符串中的所有相邻重复项和844. 比较含退格的字符串)
  • PostgreSQL逻辑管理结构
  • 高匿IP有什么作用
  • Ubuntu Linux 23.10安装manimgl
  • modesim verilog仿真验证基本流程(新建工程方式)
  • SpringBoot+AOP+自定义注解,优雅实现日志记录
  • 多式联运路径优化问题:基于拓扑排序的遗传算法染色体编码
  • Go 方法集合与选择receiver类型
  • Unity AudioClip和PCM音频数据的转化
  • linux配置vlan后网络不通
  • GORM:在Go中轻松管理数据库
  • Ubuntu18.04 下PCL的卸载与安装
  • SMTP邮件发送图片-如何在github中存储图片并访问
  • 2023年软件系统架构师论文【回忆版】