1.4.算法的时间复杂度

<<数据结构1.4>>算法时间复杂度分析例题 算法时间复杂度分析例题 分析算法时间复杂度的基本方法 1.找出语句频度最大的那条语句作为基本语句 2.计算基本语句的频度得到问题规模n的某个函数f(n) 3取其数量级用符号“O”表示 时间复杂度是由嵌套最深层语句的频度决定的 例一 void exam(float x[][],int m,int n){ float sum[]; for(int i=0;i<m;i++){ sum[i]=0.0; //基础语句 for(int j=0;j<n;j++) sum[i] 阅读详情


一.实例:

1.用算法表白:“爱你n遍”。

#include<stdio.h>
​
//算法1:逐步递增型爱你
void loveYou(int n) //n为问题规模 
{
    int i=1; //爱你的程度  --> 设为语句1 
    while(i<=n) //设为语句2 
    {
        i++; //设为语句3 
        printf("I love you %d \n",i); //设为语句4 
    } 
    printf("I love you more than %d \n",n); //设为语句5 
} 
​
int main() //程序入口 
{
    loveYou(3000); //调用函数,表达爱意 
    return 0;
}

假设上述标记的5条语句执行时间相同(实际上时间不同,但考虑太多外在条件,就难以论述时间复杂度)

语句频度:

语句1-->只执行一次,因为顺序结构

语句2-->执行了3001次,前3000次是符合i<=3000(i初值为1,n为3000,最后一次是i为3000时进行循环后i为3001,最后

进行了一次循环条件的判断,发现不符合,跳出循环)

语句3-->执行了3000次,因为只有进入循环才执行i++,循环了3000次

语句4-->执行了3000次,因为只有进入循环才执行该语句,循环了3000次

语句5-->只执行一次,因为顺序结构

所以,当问题规模n为3000时,就会花费T(3000)=1+3001+3000 * 2+1=3000 * 3+3

-->时间开销与问题规模n的关系:T(n)=3n+3

问题1:是否可以忽略时间复杂度表达式中的某些部分?

例如:T1(n)=3n+3,T2(n)=n * n +3n+1000,T3(n)=n * n * n + n * n + 9999999

当问题规模n足够大时,时间复杂度表达式中低阶的部分就可以忽略不计,因为最终差距相对没多大

且最高阶的问题规模n的系数可以化为1,常数可化为1,因为都是一个定值。

算法时间复杂度大小关系:越大代表阶数越高

解答:

问题2:如果有好几千行代码,难道要按这种方法一行一行数去统计代码的时间复杂度?

解答:

上述图片中n为问题规模,是一个变量,意味着循环次数是不固定的,

当n为常数时,意味着输出就是固定的,那么时间复杂度就是O(1),如下图:


二.练习:

例一:

例如当循环一次时,i为2;循环两次时,i为4-->成等比数列

多一次是跳出循环时的判断

例二:


三.总结:


【数据结构入门】1.4.4算法与算法分析(持续更新ing)(算法的时间复杂度2) 本文介绍了算法与算法分析中的关键概念,包括时间复杂度和空间复杂度。时间复杂度部分,通过顺序查找示例解释了最好、最坏和平均时间复杂度,并介绍了加法与乘法规则用于计算复杂算法的时间复杂度。空间复杂度部分,定义了算法所需的存储空间,并通过两个逆序算法的例子展示了不同空间复杂度的计算方法。文章还提供了思维导图资源,建议在PC端下载以获取更清晰详细的内容。最后,预告了后续线性表相关内容的更新。 阅读详情

相关推荐

域用户无法修改密码问题的解决方案

问题描述:加域的电脑无法更改密码,提示“无法更新密码,为新密码提供的值不符合字符域的长度、复杂度或历史要求”。 问题原因:域控制器中相关设置问题,主要如下图所示(如启用复杂性、最短期限和强制密码历史) 解决方案:在域控制器中更改对应的密码策略即可: ① 禁用复杂性要求 ② 最短使用期限改为0天 ③ 强制密码历史改为0 如果出现无法更改的情况,如下图箭头所指的图标所示 代表需要在域控制器的组策...

运维日记 3万+

算法day1/4——时间复杂度分析

时间复杂度分析常见时间复杂度O(1):常数复杂度O(logn):对数复杂度O(n):线性时间复杂度O(n²):平方复杂度O(n³):立方复杂度O(2ⁿ):指数复杂度O(n!):阶乘复杂度 常见时间复杂度 O(1):常数复杂度 int n=1000; Syetem.out.println("hey"+n); 这里n只运行了一次,即n等于一个数1000而已 int n=1000; Syetem.ou...

因上努力,果上随缘的博客 342

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输与原子云对接

本文详细介绍了如何利用立创·庐山派K230开发板与ATK-ESP8266模块实现图像识别数据的无线传输及与原子云平台的对接。通过硬件连接、环境配置、代码实现及调试技巧的讲解,为开发者提供了一套完整的物联网解决方案,特别适用于智能监控和边缘计算场景。

study的专栏 950

4.1-基础算法(一)(时间复杂度)

一般我们关注的是最坏空间复杂度,用0(f(n))表示,大多数时候程序占用的空间一般可以根据开的数组大小精确算出,但也存在需要估算的情况。该算法通过循环遍历数组中的每个元素,并对它们求和,因此时间复杂度与数组中的元素数量成正比。该算法使用迭代的方式计算斐波那契数列的第n个数,循环遍历n次,因此时间复杂度与n成正比。算法使用了一个大小为n的向量来存储输入元素,所以空间复杂度与输入元素的数量成正比。在非波那契数列的递归算法中,递归深度为n,因此需要的堆栈空间为O(n)。###调和级数约等于logn。

weixin_41576682的博客 954

从SAR信号到洪涝地图:基于Sentinel-1数据的水体快速提取实战

本文详细介绍了如何利用Sentinel-1 SAR数据快速提取水体信息并生成洪涝地图的实战方法。通过预处理五部曲和SDWI指数计算,结合具体案例展示了SAR技术在洪涝灾害应急监测中的高效性和准确性,为救援决策提供关键支持。

weixin_29201313的博客 463

.NET+Vue企业级RBAC权限平台:开箱即用的生产就绪方案

RBAC(基于角色的访问控制)是企业系统安全治理的基础模型,其核心在于将用户、角色与权限解耦,通过动态能力组合实现细粒度管控。在真实工程中,RBAC需突破静态角色限制,支持时间维度授权、前后端双重鉴权、行级数据范围控制等关键能力。本文聚焦于一套已落地金融、政务、制造等多行业的生产级实现——基于.NET Minimal API与Vue 3的前后端分离架构,提供菜单/按钮/接口/数据四层权限控制,内置滑动过期JWT、Redis权限缓存、动态路由加载与权限指令等开箱即用能力,显著降低权限配置与审计成本。

weixin_33326218的博客 275

1.4 算法和算法分析(时间复杂度和空间复杂度)

1.4 💎算法效率分析1. 时间复杂度(1)定义:(2)计算2. 空间复杂度定义。一个算法中的语句执行次数称为语句频度或时间频度,记为T(n),若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

m0_59440926的博客 261

hfss仿真软件入门教程

hfss仿真软件入门教程 1.模型建立 1.1在project种选择insert hfss design 1.2.在hfss-》solution type 中选择modal 1.3.在moderler-》中选择units 设置单温为mm 1.4进行画图操作,这里为提高效率直接导入一个已经画好的cad图。使用modeler-》import 2.设置端口 2.1在更改模型中的材料 选择需要更改材料...

xunshui2007的博客 3万+

【数据结构入门】1.4.3算法与算法分析(持续更新ing)(算法的时间复杂度分析)

本文介绍了算法时间复杂度分析的基本方法,包括找出基本操作语句、计算执行次数以及使用大O表示法表示时间复杂度。通过多个例题,如简单循环、嵌套循环、矩阵相乘和指数增长循环,详细展示了如何计算和分析时间复杂度。特别强调了在指数增长循环中,如何通过数学关系推导出执行次数与输入规模的关系,并最终得出时间复杂度。文章还提供了思维导图资源,建议在PC端下载以获取更清晰和详细的内容。

2504_92024050的博客 706

Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决

本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。

f6g7h8i9j的博客 190

量化爬虫实战:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向思路与Cookie Hook技巧)

本文详细解析了如何通过JS逆向技术获取同花顺问财平台的`hexin-v`参数,包括Cookie Hook技巧和完整解决方案架构。从环境搭建到参数定位,再到生成逻辑逆向,手把手教你突破数据获取限制,为量化交易提供可靠数据支持。

weixin_42557803的博客 398

【Python数据结构与算法笔记day06】1.4. 算法效率衡量+执行时间反应算法效率+单靠时间值绝对可信吗?+时间复杂度与“大O记法”+如何理解“大O记法”+最坏时间复杂度+时间复杂度的几条基本计

文章目录1.4. 算法效率衡量算法效率衡量执行时间反应算法效率单靠时间值绝对可信吗?时间复杂度与“大O记法”如何理解“大O记法”最坏时间复杂度时间复杂度的几条基本计算规则 1.4. 算法效率衡量 算法效率衡量 执行时间反应算法效率 对于同一问题,我们给出了两种解决算法,在两种算法的实现中,我们对程序执行的时间进行了测算,发现两段程序执行的时间相差悬殊(214.583347秒相比于0.182897...

汪雯琦的博客 580

【笔记篇】Davinci Configurator EcuM模块

autosar ecum模块简介

weixin_47571898的博客 1268

【数据结构】时间复杂度

一 个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知 道。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法 的时间复杂度。通过0对自身依次异或,将两个单独的数的异或后的结果找出,再通过结果将两个值分离开来,找到异或后结果的二进制序列,找出为1的位数(如果为1,则说明两个单独数在这个位不相同,可凭此将两个数分离),找到位数后,将按其他数的这个位数是否为1,还是为0分离,这就形成了两组数,在分别自身异或,最后剩下的就是单独数。

m0_72651735的博客 1422

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

算法中的时间复杂度O(n)详解例题

以下T(n)表示各算法中最耗时操作的执行次数,n表示数据量,请按照时间复杂度从小到大排列,正确的是()。 T1(n) = 100n + 200 T2(n) = 3n^2 T3(n) = 10000000 T4(n) = 300 A. T1<T2<T3<T4 B.T2<T1<T4<T3 C.T3<T4<T1<T2 D.T3<T...

qq_42615643的博客 9750

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java动态规划解决最大子数组问题,线性时间复杂度。(算法导论4.1)

package 最大子数组; import java.util.Arrays; /* * 动态规划方法解决最大子数组问题 * */ public class Solution { public static void main(String[] args) { // TODO 自动生成的方法存根 int[] arr = new int[] {13,-3,-25,20,-3,-...

qq_34553282的博客 786

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

时间复杂度

时间复杂度概念,大O符号,实例

D_yingying的博客 143

【数据结构与算法】时间复杂度与空间复杂度

时间复杂度和空间复杂度

weixin_64214213的博客 272

Python数据结构与算法—第一大节课—第1-4课时:常见时间复杂度与大小关系——day58

Python数据结构与算法:第1-4课时:常见时间复杂度与大小关系 常见时间复杂度 红色为忽略的对象 注意,经常将log2n(以2为底的对数)简写成logn 所消耗的时间从小到大(必须背下来) O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn) 练习: 时间复杂度练习( 参考算法的效率规则判断 ) O(5) O(2n + 1) O(n²+ n + 1)

asd1103810477的博客 189

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

1.算法效率 1.1如何衡量一个算法的好坏,一般是从时间复杂度和空间复杂度来判断的. 时间复杂度主要衡量一个算法的运行快慢 空间复杂度主要衡量一个算法运行所需要的额外空间 1.2大O表示法 大O符号(Big O notation):是用于描述函数渐进行为的数学符号。 1.2.1推导大O阶方法: 1、用常数1取代运行时间...

xiguazkb123的博客 170

Day1_Python数据结构与算法:时间复杂度

ANDROID6666666的博客 847

数据结构——时间复杂度(详解,详解,详解)

简单明了时间复杂度的分享和例题,秒懂

m0_74459304的博客 3891

时间复杂度的介绍

数据结构初阶:时间复杂度的介绍

Mr_Song_student的博客 427

数据结构之时间复杂度

一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。例4为二分查找,基本操作执行最好1次(就是第一个中间数),最坏O(logN)次,时间复杂度为 O(logN) ps:logN在算法分析中表示是底数为2,对数为N。例3基本操作执行最好N次(该数组本身就是有序的),最坏执行了N*(N-1)/2次(每相邻两个数之间都交换),通过推导大O阶方法+时间复杂度一般看最坏,时间复杂度为 O(N^2)。得到的结果就是大O阶。算法中的基本操作的执行次数,为算法的时间复杂度。

m0_74265792的博客 2097

Java时间复杂度与空间复杂度(1)

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!” />

2401_84009317的博客 1000
上一篇: 1.1.数据结构绪论
下一篇: 1.5.算法的空间复杂度
巧克力拌面
博客等级 码龄3年 1153粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值