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

【数据结构】时间和空间复杂度-Java

如何衡量算法的好坏

根据时间复杂度和空间复杂度来判断 

比较项目时间复杂度空间复杂度
定义衡量算法执行时间与问题规模之间的关系衡量算法在运行过程中所占用的额外存储空间与问题规模之间的关系
表达方式通常用大O符号表示,如O(n)、O(n^2)等通常用大O符号表示,如O(n)、O(1)等
关注重点算法执行时间的增长速度算法所需额外空间的增长速度
影响因素算法中基本操作的执行次数算法所需的额外数据结构占用的空间大小
举例顺序查找的时间复杂度为 O (n),随着数据规模 n 的增大,查找时间线性增长使用一个固定大小的变量,空间复杂度为 O (1);使用一个长度为 n 的数组,空间复杂度为 O (n)

大O的渐进表示法

【实例1】

推导大O阶方法

  1. 用常数1取代运行时间中所有的加法常数
  2. 在修改后的运行次数函数中,只保留最高阶项
  3. 如果最高阶项存在且不为1,则去除与这个项 相乘的常数,得到的结果就是大O阶

使用大O的渐进表示法后,Func1的时间复杂度为O(N^2)

我们平时所说的时间复杂度和空间复杂度都是在在最坏情况下的时间复杂度

拓展:怎么计算平均时间复杂度

算平均时间复杂度就是把每种情况出现的概率乘以在这种情况下算法花的时间,然后把所有这些结果加起来。

平均时间复杂度计算公式:

常见时间复杂度计算举例

【实例1】知到循环次数的时间复杂度

【实例2】不知循环次数的时间复杂度

【实例3】常数次执行的时间复杂度

【实例4】冒泡排序的时间复杂度

小tips:求复杂度一定要结合算法思想!并不一定两个 for循环嵌套,时间复杂度O(N)=N^2

【实例5】二分查找的时间复杂度

【实例6】阶乘递归的时间复杂度

【实例7】斐波那契的时间复杂度

空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量,空间复杂度算的是变量的个数,使用大O渐进表示法。

通俗来讲,空间复杂度就是看这个算法在运行过程中额外占用了多少内存空间。

【实例1】冒泡排序的空间复杂度

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

相关文章:

  • tensorRT安装详解(linux与windows)
  • MYSQL OPTIMIZE TABLE 命令重建表和索引
  • 开发指南075-各种动画效果
  • 使用 el-upload 如何做到发送一次请求上传多个文件
  • GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复
  • Linux LVS 通用命令行
  • laravel .env环境变量原理
  • Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解
  • 新时代AI桌宠:XGO Rider让你的办公室瞬间高大上
  • matlab的resample函数
  • idea怎么取消自动打开项目
  • 蓄电池在线监测系统 各大UPS铅酸蓄电池监测 保障安全
  • Python基础Day13
  • 有趣的css - 跷跷板加载动画
  • 与机器学习的邂逅--自适应神经网络结构的深度解析
  • 用python怎么实现办公自动化【批量生成出货清单】
  • 【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box
  • 单臂交换知识点
  • CentOS7 上安装GitLab的经历
  • 用python-pptx轻松统一调整演示文档配色方案
  • MySQL-30.索引-介绍
  • 6-2.Android 对话框之基础对话框问题清单(UI 线程问题、外部取消、冲突问题、dismiss 方法与 hide 方法)
  • git配置以及如何删除git
  • 深入理解new Function
  • 服务器训练神经网络必备工具Screen使用教程
  • 跨越数字鸿沟,FileLink文件摆渡系统——您的数据安全高效传输新选择
  • 递归之吃桃问题
  • CZX前端秘籍2
  • CAD图纸防泄密用什么加密软软件?2024年10款图纸加密软件排行榜
  • WebGL编程指南 - WebGL入门