首页 > 编程语言 >【DS】算法的时间复杂度与空间复杂度

【DS】算法的时间复杂度与空间复杂度

时间:2023-04-14 10:04:28浏览次数:35  
标签:count int 复杂度 ++ 算法 实例 时间 DS


文章目录

  • 算法的时间复杂度与空间复杂度
  • 1. 算法效率
  • 2. 时间复杂度
  • 2.1 时间复杂度的概念
  • 2.2 大O渐进表示法
  • 2.3 常见时间复杂度计算实例
  • 实例1 ——
  • 实例2 ——
  • 实例3 ——
  • 实例4 —— 时间复杂度是做悲观预期
  • 实例5 —— 冒泡排序·思想计算
  • 实例6 —— 二分查找·思想计算
  • 实例7、8-—— 递归·时间复杂度计算
  • 3. 空间复杂度
  • 实例1 ——
  • 实例2 ——
  • 实例3 ——
  • 4. 常见复杂度的对比

算法的时间复杂度与空间复杂度

反爬链接

1. 算法效率

引:如何衡量一个算法的好坏呢?

算法在编译链接成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间空间两个维度来衡量的,即时间复杂度和空间复杂度。
时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间

在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度(摩尔定律:硬件每18个月翻倍)。所以我们如今已经不需要再特别关注一个算法的空间复杂度,重点关注时间复杂度

2. 时间复杂度

2.1 时间复杂度的概念

在计算机科学中,算法的时间复杂度是一个函数(是含未知数的数学表达式啦hh),它定量描述了该算法的运行时间。

计算时间复杂度不是计算时间。一个算法执行所耗费的时间,理论上是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们如果每个算法都上机测试,就很麻烦;且运行环境不同,花费时间也不同。

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。

2.2 大O渐进表示法

标签:count,int,复杂度,++,算法,实例,时间,DS
From: https://blog.51cto.com/u_15091587/6189403

相关文章

  • HDU 1116 && POJ 1386 Play on Words(欧拉路径)
    按字母来建边,每个单词的首字母和尾字母加边。先判断是否连通,然后判断每个字母的入度和出度不能出现差的绝对值大于2,然后入度和出度差的绝对值为1的不能超过两个。就可以形成欧拉路径代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include......
  • POJ 1905 Expanding Rods (二分+计算几何+精度处理)
    题目地址:POJ1905用二分枚举h,然后判断弧长是否符合条件。重点还是在精度问题上,具体看代码吧。。#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include......
  • #yyds干货盘点#【愚公系列】2023年04月 .NET CORE工具案例-.NET Core使用PaddleOCRSha
    (文章目录)前言PaddleOCRSharp是一个基于百度飞桨PaddleOCR的C++代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,同时针对小图识别不准的情况下,做了优化,提高识别准确率。包含总模型仅8.6M的超轻量级中文OCR,单模型支持中......
  • 使用Pytorch实现强化学习——DQN算法
    使用Pytorch实现强化学习——DQN算法强化学习的主要构成强化学习主要由两部分组成:智能体(agent)和环境(env)。在强化学习过程中,智能体与环境一直在交互。智能体在环境里面获取某个状态后,它会利用该状态输出一个动作(action)。然后这个动作会在环境之中被执行,环境会根据智能体采取的动......
  • #yyds干货盘点#Git 技巧之高级配置用户信息
    众所周知,日常配置git用户信息的方式通常是:gitconfig--globaluser.name'用户名'gitconfig--globaluser.email'邮箱'全局方式配置,写入到 ~/.gitconfig文件中,这种方式显然只能设置最常用通用的用户信息,然后在需要部分仓库(如公司项目)需要特殊配置时,只能再通过下面的方式配置......
  • MATLAB代码:基于改进K-means算法的含电动汽车负荷源荷场景聚类
    MATLAB代码:基于改进K-means算法的含电动汽车负荷源荷场景聚类关键词:有序聚类 改进k-means聚类电动汽车负荷聚类风光场景聚类 仿真平台:MATLAB主要内容:代码主要做的是基于改进k-means算法的场景生成,具体为含有电动汽车负荷的场景聚类问题,其中,光电和电负荷用有序聚类方法,风......
  • HDU 2222 Keywords Search (AC自动机)
    题目地址:HDU2222AC自动机第一发!真好奇这些算法是怎么被发明的。。算法的魅力真是无穷。这题是AC自动机模板题。自己实在写不出来,比着kuangbin的模板写的==代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#incl......
  • MATLAB代码:基于两阶段鲁棒优化算法的微网电源容量优化配置
    MATLAB代码:基于两阶段鲁棒优化算法的微网电源容量优化配置关键词:容量优化配置微网 两阶段鲁棒规划仿真平台:MATLABYALMIP+CPLEX主要内容:代码主要做的是一个微网中电源容量优化配置的问题,即风电、光伏、储能以及燃气轮机的容量规划问题,程序考虑了不确定性,采用两阶段鲁棒优化......
  • MATLAB代码:基于多目标遗传算法的分布式电源选址定容研究
    MATLAB代码:基于多目标遗传算法的分布式电源选址定容研究关键词:分布式电源选址定容多目标遗传算法  参考文档:《店主自写文档》基本复现;仿真平台:MATLAB主要内容:代码主要做的是基于多目标遗传算法的分布式电源选址定容模型,首先构建了含义分布式电源的配电网基本结构,对分布......
  • 配电网动态多目标重构 采用改进粒子群算法,通过matlab编程,以IEEE33节点网络为例
    配电网动态多目标重构采用改进粒子群算法,通过matlab编程,以IEEE33节点网络为例,设置孤岛和环网约束,以开关动作次数、电压偏差和网损为目标,得到动态多目标重构模型,程序采用严格约束方式,未使用罚函数等非准确方式ID:46180674573489420......