王道_数据结构 1.2_2_算法的时间复杂度

1.2_2_算法的时间复杂度

    • 一、为什么要事先预估算法时间开销
    • 二、时间复杂度的计算与技巧
      • 1、化简“算法时间开销”的计算方式的依据
      • 2、常用技巧
        • (1)加法、乘法规则
        • (2)时间复杂度的数量级阶数排行
      • 3、计算时间复杂度的结论与步骤
        • (1)结论
        • (2)步骤
      • 4、两个小练习
    • 四、三种时间复杂度
    • 五、总结(思维导图)

笔记来源: B站 王道 数据结构

一、为什么要事先预估算法时间开销

事后统计算法运行时间无法排除与算法本身无关的外界因素
如:机器性能、编程语言、机器指令质量以及有些算法不能事后统计。
在这里插入图片描述

二、时间复杂度的计算与技巧

1、化简“算法时间开销”的计算方式的依据

完整列出算法运行时间的表达式之后,我们可以发现,当问题规模n趋于无穷大时:
(1) 可以只考虑阶数高的部分;
(2)此部分常数项系数可以忽略
在这里插入图片描述

在这里插入图片描述

2、常用技巧

(1)加法、乘法规则

加法规则:多项相加,只保留最高阶的项,且系数变为1
乘法规则:多项相乘,都保留

在这里插入图片描述

(2)时间复杂度的数量级阶数排行

“常对幂指阶”

在这里插入图片描述
在这里插入图片描述

3、计算时间复杂度的结论与步骤

(1)结论

1、顺序执行的代码(不在循环体内的语句)只会影响常数项,可以忽略
2、只需挑选循环中的一个基本操作分析他的执行次数与n的关系即可
3、如果有多层嵌套循环,只需关注最深层循环循环了几次

(2)步骤

1、找到一个基本操作(最深层循环)
2、分析该基本操作的执行次数x与问题规模n的关系x=f(n)
3、x的数量级O(x)就是算法时间复杂度T(n)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、两个小练习

步骤:
列出循环执行次数x与问题规模n的关系;
解出x=?n

在这里插入图片描述
在这里插入图片描述

四、三种时间复杂度

我们一般只研究算法的最坏时间复杂度平均时间复杂度
在这里插入图片描述

五、总结(思维导图)

在这里插入图片描述

  • 为什么研究的都是规模n趋于无穷大的情况,因为算法的性能问题只有在n很大时才会暴露出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TMC电池供电方案推荐

静音、小巧、精确、高效的构建模块改变了电机在电池供电设备中的使用方式。从恒温散热器阀,到现实捕捉设备和电动工具,再到医疗健康应用,激发丰沛想象力,将可靠概念运用于电池供电设备,为消费者和专业人士带来便利。 …

Klocwork 2023.4发布:问题匹配算法升级,编码标准全面支持!

Klocwork 2023.4 的新增功能 Klocwork 2023.4 改进了问题匹配的算法,为桌面端和CI集成构建之间的结果提供了更大的一致性,以及连续构建之间的问题匹配。Klocwork的最新版本还改进了C/C语言的分析引擎,减少了误报/漏报,跨过程跟踪…

C#,洛布数(Lobb Number)的计算方法与源代码

1 洛布数(Lobb Number) 在组合数学中,洛布数(Lobb Number)L(m,n)计算nm开括号的排列方式,以形成一个有效的平衡括号序列的开始。 Lobb数由两个非负整数m和n参数化,其中n>m>0。…

如何本地部署hMailServer邮件服务并实现远程发送邮件【内网穿透】

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

判断当前设备是不是安卓或者IOS?

代码(重要点): 当前文件要是 xxx.js文件,就需要写好代码后调用才会执行: // 判断是不是安卓 const isAndroid () > {return /android/.test(navigator.userAgent.toLowerCase()); }// 判断是不是ios const isIOS () > {return /iphone|ipad|ipod/.test(navigator.use…

《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)

文章目录 1.1 Pandas 简介1.1.1 基础知识1.1.2 案例:气候变化数据分析1.1.3 拓展案例一:金融市场分析1.1.4 拓展案例二:社交媒体情感分析 1.2 安装和配置 Pandas1.2.1 基础知识1.2.2 案例:个人财务管理1.2.3 拓展案例一&#xff1…

【IMAX6U移植OpenCV】

IMAX6U移植OpenCV V1.3 一 安装通用交叉编译器1.1 下载通用交叉编译器1.2 安装通用交叉编译器1.3 验证通用交叉编译器 二 搭建 OpenCV 3.4.1 的编译环境2.1 下载 OpenCV 3.4.1 源码2.2 配置 OpenCV 环境2.3 编译 OpenCV 源码 三 Qt 项目中加入OpenCV3.1 Qt 项目的 pro 文件Open…

【Spark系列1】DAG中Stage和Task的划分全流程

一、整体流程 每个Aciton操作会创建一个JOB,JOB会提交给DAGScheduler,DAGScheduler根据RDD依赖的关系划分为多个Stage,每个Stage又会创建多个TaskSet,每个TaskSet包含多个Task,这个Task就是每个分区的并行计算的任务。…

数灵通外链工具如何实现回传功能?

在数字营销的世界里,了解用户行为是至关重要的。数灵通提供了一个强大的回传功能,能够让我们在用户完成某个动作后,获取到这个动作的数据反馈。利用这个功能,企业可以更好地了解用户需求和行为,从而优化营销策略&#…

【目标跟踪】3D点云跟踪

文章目录 一、前言二、代码目录三、代码解读3.1、文件描述3.2、代码框架 四、关联矩阵计算4.1、ComputeLocationDistance4.2、ComputeDirectionDistance4.3、ComputeBboxSizeDistance4.4、ComputePointNumDistance4.5、ComputePointNumDistance4.6、result_distance 五、结果 一…

main函数、_tmain函数和wmain函数的区别

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 今天碰到一个问题,算是彻底搞明白了main函数、_tmain函数和wmain函数的区别。就是使用vs2015新建一个控制台工程,如果入口函数是设…

探究HMAC算法:消息认证与数据完整性的完美结合

Hash-based Message Authentication Code(基于哈希的消息认证码,简称HMAC)算法作为一种广泛应用的消息认证码(MAC)算法,在现代信息安全领域起着至关重要的作用。本文将从算法原理、优缺点、实际应用等方面&…

亚马逊要怎么运营?亚马逊运营主要运营内容有哪些?

一个店铺的成长发展少不了运营,而店铺的运营必须要有相关运营经验,才能将店铺做好,近几年亚马逊电商平台在不断的发展,亚马逊的运营模式非常独特,它借助于多种技术解决方案来提供最佳的客户体验。那么亚马逊要怎么运营…

你的MiniFilter安全吗?

简介 筛选器管理器 (FltMgr.sys)是Windows系统提供的内核模式驱动程序, 用于实现和公开文件系统筛选器驱动程序中通常所需的功能; 第三方文件系统筛选器开发人员可以使用FltMgr的功能可以更加简单的编写文件过滤驱动, 这种驱动我们通常称为MiniFilter, 下面是MiniFilter的基本…

Java多线程--解决单例模式中的懒汉式的线程安全问题

文章目录 一、单例设计模式的线程安全问题(1)饿汉式没有线程安全问题(2)懒汉式线程安全问题1、案例2、方式1-同步方法3、方式2-同步代码块4、优化 二、代码(1)实现线程安全的懒汉式(2&#xff0…

猫什么时候发腮?公认发腮效果好的生骨肉冻干推荐

猫什么时候发腮是许多猫主人非常关心的问题。在猫咪的成长过程中,发腮是一项重要的体征,也是猫咪成熟的标志。想要让猫咪拥有可爱的肉嘟嘟脸型,主人需要在适龄的年龄段加强营养补给,不要错失最佳发腮期。那么,猫咪的最…

api接口1688商品详情接口采集商品详情数据商品价格详情页数据可支持高并发调用演示示例

接入1688商品详情API接口的步骤如下: 注册账号:首先,你需要在1688开放平台注册一个账号。 创建应用:登录后,在控制台中找到“我的应用”,点击“创建应用”。 获取API密钥:创建应用后&#xff…

【Linux】VMware Workstation16安装银河麒麟高级服务器操作系统V10 SP3 AMD64

目录 一、麒麟服务器概述 二、安装步骤 设置硬盘大小 完成配置 修改内存 处理器等设备配置 选择直接安装 配置磁盘 网络配置 设置root账号密码 开始安装 启动完成 一、麒麟服务器概述 银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云…

时间序列预测——GRU模型

时间序列预测——GRU模型 在深度学习领域,循环神经网络(RNN)是处理时间序列数据的一种常见选择。上期已介绍了LSTM的单步和多步预测。本文将深入介绍一种LSTM变体——门控循环单元(GRU)模型,包括其理论基础…

Flutter canvas 画一条会动的波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形,html 的 Canvas 也画过一次类似的, 今天用 Flutter Canvas 试了下 感觉差不多: html 版本 大致效果如下: 思路和 html 实现的类似: 也就是找出点的位置,使用二阶…