王道_数据结构 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》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

与 gpio相关的OF函数

一. 简介 前面在设备树文件中&#xff0c;创建了 Led设备节点。如下所示&#xff1a; gpioled{compatible "alientek, gpioled";pinctrl-names "default";pinctrl-0 <&pinctrl_gpioled>;led-gpio <&gpio1 3 GPIO_ACTIVE_LOW>;st…

判断当前设备是不是安卓或者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 案例&#xff1a;气候变化数据分析1.1.3 拓展案例一&#xff1a;金融市场分析1.1.4 拓展案例二&#xff1a;社交媒体情感分析 1.2 安装和配置 Pandas1.2.1 基础知识1.2.2 案例&#xff1a;个人财务管理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&#xff0c;JOB会提交给DAGScheduler&#xff0c;DAGScheduler根据RDD依赖的关系划分为多个Stage&#xff0c;每个Stage又会创建多个TaskSet&#xff0c;每个TaskSet包含多个Task&#xff0c;这个Task就是每个分区的并行计算的任务。…

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

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

Docker Compose下载

使用插件版本&#xff1a; 进行安装 乌班图的安装方式参考&#xff1a;centos 的安装方式参考&#xff1b; sudo yum update sudo yum install docker-compose-plugin通过检查版本来验证 Docker Compose 是否已正确安装。 docker compose version 预期输出&#xff1a; Dock…

编译LVGL遇到的问题及解决方式

问题1: 编译选项报错, 未识别 -Wshift-negative-value 选项 Building project file: main/src/main.c Building project file: main/src/mouse_cursor_icon.c cc: error: unrecognized command line option ‘-Wshift-negative-value’ cc: error: unrecognized command line …

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

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

Node.js 文件系统操作指南

文章目录 Node.js 文件系统操作完全指南一、引言二、基本文件操作2.1 读取文件2.2 写入文件2.3 追加内容到文件 三、文件与目录的创建与删除3.1 创建文件3.2 创建目录3.3 删除文件3.4 删除目录 四、文件与目录的信息查询4.1 检查文件或目录是否存在4.2 获取文件信息4.3 获取目录…

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

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

C++ 11新特性之完美转发

概述 在C编程语言的演进过程中&#xff0c;C 11标准引入了一系列重大革新&#xff0c;其中之一便是“完美转发”机制。这一特性使得模板函数能够无损地传递任意类型的实参给其他函数或构造函数&#xff0c;从而极大地增强了C在泛型编程和资源管理方面的灵活性与效率。 完美转发…

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

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

20240128周报-网络太杂,Tomcat太难

今天来做个小总结吧&#xff0c;之前说想用几个月的时间将Java生态给整理一遍&#xff0c;该工作已经进入第三周了。先和各位老老板汇报一下上一周的工作&#xff0c;然后说一下本周的计划和后面的计划。 1.上周工作 上周的计划是将网络和Tomcat的内容梳理一番&#xff0c;但…

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

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

你的MiniFilter安全吗?

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