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

【LeetCode修行之路】算法的时间和空间复杂度分析

🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)

🌵文章目录🌵

  • 前言
  • 💡一、时间、空间复杂度简介
    • 🥭1.1.时间复杂度
    • 🍅1.2.空间复杂度
    • 🍓1.3.大O表示法
  • 📝二、时间、空间复杂度计算方法
    • 🍉2.1.常见的复杂度形式
    • 🍏2.2.如何计算时间复杂度
    • 🍐2.3.如何计算空间复杂度
  • 🎯三、常见数据结构与算法的时间、空间复杂度总结
    • 🍊3.1.数据结构时间与空间复杂度
    • 🌶️3.2.堆的时间与空间复杂度
    • 🥕3.3.图的时间与空间复杂度
    • 🥦3.4.`排序算法的时间与空间复杂度`
    • 🌽3.5.搜索算法的时间与空间复杂度
  • 🔄四、Master Theorem解决递归复杂度求解
    • 🧀4.1.Master Theorem概念
    • 🥐4.2.当运行时间主要由leaves决定
    • 🥪4.3.当运行时间均匀分布在整个树中
    • 🌮4.4.当运行时间主要由root决定
  • 🍦五、 总结与重要性
  • 🤝期待与你共同进步
  • 📚参考文档


前言

一般来说,解决问题的方法不止一种。我们需要学习如何比较不同算法的性能,并选择最佳算法来解决特定的问题。一个算法的好坏,我们可以从时间和空间两个维度去衡量。并且,一般分为两个阶段,一是算法完成前的理论分析二是算法完成后实际分析

  • 理论分析:这种算法的效率分析是通过假设所有其他因素,如处理器的速度等是恒定的,对算法的实现没有影响。
  • 实际分析:当算法实现后,我们需要考虑算法采用编程语言,然后在特定计算机上执行该算法,其消耗的时间与计算机的硬件水平相关。在此分析中,我们要收集实际的统计数据,如运行时间和所需空间。

本篇文章要讨论的主要是算法的理论分析,从常见的时间、空间复杂度入手,介绍各种时间、空间复杂度的特点,并总结一些通用数据结构、排序算法、搜索算法相关操作的时间和空间复杂度。最后,针对递归操作,使用Master Theorem来分析其复杂度。


💡一、时间、空间复杂度简介

🥭1.1.时间复杂度

时间复杂度是指执行这个算法所需要的计算工作量,其复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好地反映出算法的优劣与否。一个算法花费的时间与算法中语句的执行次数成正比,执行次数越多,花费的时间就越多。一个算法中的执行次数称为语句频度或时间频度,记为T(n),其中n称为问题的规模,当n不断变化时,它所呈现出来的规律,我们称之为时间复杂度。
比如: T ( n ) = n 2 + 1 T(n)=n^2+1 T(n)=n2+1
T ( n ) = 5 n 2 + 2 n + 1 T(n)=5n^2+2n+1 T(n)=5n2+2n+1
,虽然算法的时间频度不一样,但他们的时间复杂度却是一样的,时间复杂度只关注最高数量级,且与之系数也没有关系。通常一个算法由控制结构(顺序,分支,循环三种)和原操作(固有数据类型的操作)构成,而算法时间取决于两者的综合效率

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

相关文章:

  • 2000w 的数据量,mysql要进行几次IO操作,为什么
  • GEE 实战:Landsat 5 月度 NDVI 数据插值填补(以 8 月为例)_后附完整代码
  • sting模拟实现
  • 前后端联合实现多个文件上传
  • FastAPI 教程:构建高性能异步 API 服务
  • 石化设备健康管理平台:工业智能化转型的关键使能技术​
  • std::thread详解
  • Spring Boot单体项目整合Nacos
  • C++17 折叠表达式(Fold Expressions)详解
  • ConcurrentHashMap在扩容的过程中又有新的数据写入是怎么处理的
  • 《Bishop PRML》10.1 (3) 理解VAE reconstruction loss
  • Redis 中的 Bitmap 与 Bitfield 及 Java 操作实践
  • python如何下载svg图片
  • 【Proteus仿真】数码管控制系列仿真——单个数码管控制/多数码管控制
  • leetcode 260 只出现一次的数字III
  • 你的数据是如何被保护的?
  • Linux系统的进程管理
  • vue3+vite+ts 发布npm 组件包
  • 查看所有装在c盘软件的方法
  • [知识点记录]SQLite 数据库和MySQL 数据库有什么区别?
  • DuckDB 内嵌分析:ABP 的「本地 OL盘快照」
  • 福彩双色球第2025100期号码推荐
  • 福彩双色球第2025100期数据统计
  • 吴恩达机器学习作业十一:异常检测
  • Docker 容器(二)
  • 机器视觉学习-day15-图像轮廓特征查找
  • Wi-Fi技术——OSI模型
  • 深度学习量化双雄:PTQ 与 QAT 的技术剖析与实战
  • 开源协作白板 – 轻量级多用户实时协作白板系统 – 支持多用户绘图、文字编辑、图片处理
  • globals() 小技巧