时间复杂度(小总结)

时间复杂度解析 根据算法换算时间复杂度 常见时间复杂度及其之间的关系 一、引入 先看一道题,如果 a+b+c=1000,且 a2+b2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合? 二、两种解答方式 算法是独立存在的一种解决问题的方法和思想。 第一种解答方式: import time start_time = time.time() for a in range(0, 1001): for b in range(0, 1001)... 阅读详情

时间复杂度定义:

如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”。
当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”。

计算方法:

1. 找到执行次数最多的语句
2. 计算语句执行次数的数量级
3. 用大O来表示结果


O(1)
交换i和j的内容
temp=i;
i=j;
j=temp;                    

以上三条单个语句的频度为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

O(n2)
    sum=0;                /* 执行次数1 */
    for(i=1;i<=n;i++)      
       for(j=1;j<=n;j++)
         sum++;       /* 执行次数n2 */
解:T(n) = 1 + n2 = O(n2)

   for (i=1;i<n;i++)
   {
       y=y+1;        ①   
       for (j=0;j<=(2*n);j++)    
          x++;        ②      
   }         
解:  语句1的频度是n-1
         语句2的频度是(n-1)*(2n+1) = 2n2-n-1
         T(n) = 2n2-n-1+(n-1) = 2n2-2
         f(n) = n2
         lim(T(n)/f(n)) = 2 + 2*(1/n2) = 2
         T(n) = O(n2).


例子:
O(n)                                         
   a=0;
   b=1;                     ①
   for (i=1;i<=n;i++) ②
   {  
      s=a+b;    ③
      b=a;     ④  
      a=s;     ⑤
   }
解:  语句1的频度:2,        
         语句2的频度:n,        
         语句3的频度:n,        
         语句4的频度:n,    
         语句5的频度:n,                                  
         T(n) = 2+4n
         f(n) = n
         lim(T(n)/f(n)) = 2*(1/n) + 4 = 4
         T(n) = O(n).     
                                                                            
O(log2n)
   i=1;       ①
   while (i<=n)
      i=i*2; ②
解: 语句1的频度是1, 
       设语句2的频度是t,  则:nt<=n;  t<=log2n
       考虑最坏情况,取最大值t=log2n,
        T(n) = 1 + log2n
        f(n) = log2n
        lim(T(n)/f(n)) = 1/log2n + 1 = 1
        T(n) = O(log2n)

 O(n3)
   for(i=0;i<n;i++)
   { 
      for(j=0;j<i;j++) 
      {
         for(k=0;k<j;k++)
            x=x+2; 
      }
   }
解:当i=m, j=k的时候,内层循环的次数为k当i=m时, j 可以取 0,1,...,m-1 ,  所以这里最内循环共进行了0+1+...+m-1=(m-1)m/2次所以,i从0取到n, 则循环共进行了: 0+(1-1)*1/2+...+(n-1)n/2=n(n+1)(n-1)/2次
T(n) = n(n+1)(n-1)/2 = (n3-n)/2
f(n) = n3
所以时间复杂度为O(n3)。

最后总是把最大的,成长最快的时间复杂度作为代表时间复杂度的最终结果。

例如 理论计算复杂度应该为O(n^3+n^2+n^1)最后结果为O(n^3).


时间复杂度分析 在上一篇文章中我们提到了时间复杂度大O分析法的使用,这次继续来探究时间复杂度的分析 我们先来看一下下面这段代码 这段代码的作用是在数组中寻找x的位置,找到了直接返回位置,没有找到的话返回-1,用上一篇文章所学到的知识,可以很清楚的看出来,这段代码的时间复杂度为O(n) 但是这段代码明显还有优化的空间,如果我们在数组中间寻找到x的话,就不需要把整个数组都循环一边了,所以可以优化为下面这段代码。 ... 阅读详情

相关推荐

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 252

时间复杂度简述及例题

时间复杂度,二分查找,刷题统计

weixin_62973176的博客 2903

PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发

在嵌入式系统与服务器电源设计中,数字电源管理总线是实现高效、可靠电源监控与控制的关键技术。PMBus协议基于广泛应用的I2C总线物理层,通过定义标准化的命令集、数据格式与时序规范,为多路电源的电压电流监控、动态调整及故障处理提供了高效解决方案。其技术价值在于通过硬件自动处理协议解析、时钟拉伸与中断,显著降低软件复杂度,使开发者能聚焦于电源环路设计等核心逻辑。该协议广泛应用于服务器、通信基站及高性能计算板卡等场景,通过引入数据包错误检查、专用告警线等机制,确保了电源管理的可靠性。本文以TI TMS320F28

weixin_29189377的博客 374

高质量时间复杂度和空间复杂度汇总

1.时间复杂度和空间复杂度统称为算法效率 时间复杂度主要衡量一个算法的运算速度 空间复杂度主要衡量一个算法需要的额外空间 注:以前的时候比较注重空间效率,因为存储容量很小。但是现如今计算机行业发展迅速,存储容量已经达到了很高的程度,所以现在更重视时间效率。 2.算法中的基本操作的执行次数,为算法的时间复杂度 算法在运行过程中临时占用存储空间的量度,为算法的空间复杂度 时间复杂度并不是看时间的长短,而是看执行的次数 空间复杂度并不是看空间的大小,而是看执行的个数 3.时间复杂度、空间复杂度...

拼命阿紫冲冲冲! 916

LC滤波器设计实战:从理论计算到PCB布局的完整指南

滤波器是信号处理与电路设计中的基础组件,用于从复杂信号中提取特定频率分量或抑制干扰噪声。其核心原理基于电感(L)和电容(C)等无源元件的频率选择特性,通过特定的网络拓扑实现幅频与相频特性的塑造。在工程实践中,LC滤波器因其结构简单、可靠性高、成本可控,成为射频、模拟及电源电路中的关键技术手段。其设计价值在于将理论网络综合转化为可量产、高性能的硬件解决方案,广泛应用于通信系统、音频处理、电源净化和传感器信号调理等场景。本文聚焦于LC滤波器的工程设计全流程,深入剖析了巴特沃斯、切比雪夫等经典类型的选型权衡,并重

weixin_34194829的博客 273

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 326

时间复杂度详解+例题分析

时间复杂度,就是描述 算法语句执行次数 与 问题规模n 的函数模型 大O--预计估算,不需要精确的执行次数,知道大概就可,所以描述主要增长率,略去系数等非主要影响因素,来表示渐进的函数关系--即渐进时间复杂度。

ZYM 4456

国产操作系统应用迁移与适配

了解国产操作系统的背景及意义

2301_77609559的博客 2680

链表 | 知识总结

刷题跟随carl代码随想录链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是一个是(存放指向下一个节点的指针),最后一个节点的(空指针的意思)。链接的称为链表的也就是。单链表中的指针域只能指向节点的下一个节点。 双链表:每一个节点有两个指针域,一个,一个。双链表 既可以也可以。 链表首尾相连。 循环链表可以用来解决约瑟夫环问题。链表在内存中可,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。链表是在内存中各个节点。 链表的操作 删除节点、添加节点、获取数值 | 链表 |

qq_44250700的博客 6226

rosbag分析传感器数据的时间同步情况方法

ROS传感器时间同步分析流程:通过rosbaginfo初步检查bag文件信息,使用rqt_bag可视化时间线分布,采用rostopicecho或Python脚本提取各传感器时间戳并计算时间差统计值(均值/最大差/标准差),最后分析接收与采样时间延迟。量化评估同步精度,识别固定偏移或随机抖动问题,确保多传感器数据对齐,为后续融合处理提供可靠数据基础。

start_up_go的博客 201

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1729

数据结构基本操作的复杂度汇总

1.顺序表 插入操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数n/2 删除操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数(n-1)/2 按值查找时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数(n+1)/2 2.单链表 头插法O(n) 尾插法O(n) 按序查找O(n) 按值查找O(n) 插入 删除 其中插入和删除操作,指定结点O(1),需要从头查找则花费主要用于查找O(n) 3.二叉树 二叉树的

vener_的博客 3220

五、实战pxe安装ubuntu 22.04 软raid1(实际生产pxe配置)

这段配置文件是一个cloud-init的自动安装配置,用于自动化部署Ubuntu服务器操作系统。它定义了从系统身份、键盘布局、区域设置到磁盘分区和RAID配置的一系列设置,并且包含了在安装过程的最后阶段执行的一些命令。基础设置version: 1指定了autoinstall配置文件的版本。source定义了安装源,这里是ubuntu-server。identity设置了主机名(hostname)、用户(username)和密码(password注意这里的密码是经过加密的。键盘与语言设置。

jundao1997的专栏 999

什么是时间复杂度

开门见山 解决问题 算法的时间复杂度,是一个用于度量一个算法的运算时间的一个描述,本质是一个函数,根据这个函数能在不用具体的测试数据来测试的情况下,粗略地估计算法的执行效率,换句话讲时间复杂度表示的只是代码执行时间随数据规模增长的变化趋势。 常用大O来表述,这个函数描述了算法执行所要时间的增长速度,记作f(n)。算法需要执行的运算次数(用函数表示)记作T(n)。存在常数 c 和函数 f(n),使得...

qq_41297896的博客 3万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

算法的时间复杂度

一.如何计算 1.时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数) 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 2.一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越...

kkyh28的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

时间复杂度介绍

时间复杂度是指一个算法在运行过程中所需要的时间与输入规模之间的关系。通常用大O符号(Big O)表示,用以描述算法最坏情况下的运行时间增长率。

niubikls的博客 2895

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【数据结构】时间复杂度(加法乘法规则、渐近时间复杂度、循环时间复杂度总结

在实际求解中,只留表达式中最高阶的部分,丢弃其他部分。2.只需挑一个基本操作分析它的执行次数与n的关系即可。最坏时间复杂度、平均时间复杂度、最好时间复杂度。1.顺序执行的代码只会影响常数项,可忽略。3.如果有多层嵌套循环,只需关注。1.找到一个最深层的基本操作;

m0_61628700的博客 3693

关于时间复杂度的详解

-宝宝为啥听不懂他们在讨论的时间复杂度 0.0 -我怎么知道这个算法运行得比那个算法快 0.0 -我究竟会不会超时0.0 -我为什么还会超时0.0 -时间复杂度怎么算0.0 在别人还不会求时间复杂度的时候而你会了是不是很酷 在别人都会求时间复杂度的时候而你不会是不是很尴尬 千里之行始于足下 希望这篇文章能祝你一臂之力=w=   此篇详解,希望能帮助各位稍微解决一下不解=w= ...

Eirlys的博客 3万+

搞懂时间复杂度、时间复杂度

文章目录写在前面1、数学中的log什么意思?2、用T(n)表示程序执行次数3、用O(n)表示时间复杂度4、时间复杂度大小比较 写在前面 时间复杂度是用来干什么的? 时间复杂度可以用来衡量算法的执行效率。 1、数学中的log什么意思? 预备知识:数学中的log什么意思? log表示对数。如果a的b次方等于n,那么 在上面的式子中,我们可以看出log最后等于的是b,b表示a的多少次方,b是一个量级、a是一个系数,而时间复杂度中只考虑量级,所以我们写的时候常常忽略a,直接写 log n。 2、用T(n)表示程序

这里的分享,都是干货 3587

python—时间复杂度

一、时间复杂度规则 1、计算时,往往只关注时间频度中最高次项,其他次要项和常数项忽略 例如: T=3*n^3+2*n^2+10000时间的复杂度: O(n^3) 2、顺序结构,时间复杂度按加法来计算 让用户输入2个列表,一个列表的长度为m另一个为n,对这2个列表分别求和 比较他们的和的大小 循环遍历,分别求和,比较大小 m步、n步 时间复杂度为O(m+n) 3、循环结构,时间复杂度按乘法来运算 T=n*n*3 4、分支结构:时间复杂度取最大值 5、没有特殊说明时,算法的时间复杂度都是指最坏的时间复杂度 最

python全栈 7735

时间复杂度

本文基于一位哔哩哔哩up的视频,主要分享时间复杂度,包括什么是时间复杂度和如何计算一层循环,二层循环,多层循环的时间复杂度

共创共享 1684

时间复杂度吐血总结

不过,时间复杂度要比空间复杂度更容易产生问题,因此算法研究的主要也是时间复杂度,不特别说明的情况下,复杂度就是指时间复杂度。大O表示法O(f(n))中的f(n)的值可以为1、n、logn、n²等,因此我们可以将O(1)、O(n)、O(logn)、O(n²)分别可以称为常数阶、线性阶、对数阶和平方阶,那么如何推导出f(n)的值呢?当i=0时,内循环执行了n次;,分裂N轮后有2。上面算法的运行的次数的函数为f(n)=3,根据推导大O阶的规则1,我们需要将常数3改为1,则这个算法的时间复杂度为O(1)。.....

流楚丶格念的博客 2906

【时间复杂度】时间复杂度

//------------------&gt;摘自:https://blog.youkuaiyun.com/qq_41523096/article/details/82142747《一套图 搞懂“时间复杂度”》 渐进时间复杂度 比如算法A的相对时间是T(n)= 100n,算法B的相对时间是T(n)= 5n^2,这两个到底谁的运行时间更长一些?这就要看n的取值了。 所以,这时候有了渐进时间复...

我的笔记本 2934
上一篇: Nyist 915 +-字符串
下一篇: 最少硬币问题 贪心
JasonChen_ACM
博客等级 码龄11年 2粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值