数据结构复习计划之复杂度分析(时间、空间)

第二节:算法
时间复杂度和空间复杂度
算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
算法可以有三种表示形式:
  •  伪代码
  •  自然语言
  •  流程图

算法的五个特性

① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

② 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。

③ 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。

④ 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。

⑤ 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

算法和程序是两个不同的概念。
一个计算机程序是对一个算法使用某种程序设计语言的具体实 现。算法必须可终止意味着不是所有的计算机程序都是算法。

好算法标准

① 正确性: 算法应满足具体问题的需求。

② 可读性: 算法应容易供人阅读和交流。可读性好的算法有助于对算法的

理解和修改。

③ 健壮性: 算法应具有容错处理。当输入非法或错误数据时,算法应能

适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。

④ 通用性: 算法应具有一般性 ,即算法的处理结果对于一般的数据集合

都成立。

效率与存储量需求: 效率指的是算法执行的时间;存储量需求指算法

执行过程中所需要的最大存储空间。一般地,这两者与问题的规模有关。

♥效率 指的是算法执行的时间存储量需求指算法执行过程中所需要的最大存储空间
算法效率的度量
算法执行时间需通过依据该算法编制的程序在计算机上运行所消耗的时间来度量。
其方法通常有两种:
事后统计:计算机内部进行执行时间和实际占用空间的统计。
问题:必须先运行依据算法编制的程序;依赖软硬件环境,容易掩盖 算法本身的优劣;没有实际价值。
算法效率的度量
撇开软硬件等有关部门因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用n表示),表示成是问题规模的函数。
算法效率的度量
表示时间复杂度的阶有:
O(1) :常量时间阶 O (n):线性时间阶
O(㏒n) :对数时间阶 O(n㏒n) :线性对数时间阶
O (nk): k≥2 ,k次方时间阶
其关系为:
O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n2)<O(n3)
指数时间的关系为:
O(2 n )<O(n!)<O(n n )
⭐常量阶
{++x; s=0 ;}
将x自增看成是基本操作,则语句频度为1,时间复杂度为O(1) 。
将s=0也看成是基本操作,则语句频度为2,时间复杂度仍为O(1)。
线性阶
for(i=1; i<=n; ++i) {
++x;
s+=x ;
}
语句频度为:2n,其时间复杂度为:O(n) ,即为线性阶。
平方阶
for(i=1; i<=n; ++i){
for(j=1; j<=n; ++j) {
++x;
s+=x ;
}
}
语句频度为:2n2 ,其时间复杂度为:O(n2) ,即为平方阶。
三次方阶
两个n阶方阵的乘法
for(i=1,i<=n; ++i)
for(j=1; j<=n; ++j) {
c[i][j]=0 ;
for(k=1; k<=n; ++k)
c[i][j]+=a[i][k]*b[k][j] ;
}
由于是一个三重循环,每个循环从1到n,则总次数为: n×n×n=n3 时
间复杂度为T(n)=O(n3)
小结:
空间复杂度的度量
空间复杂度(Space complexity) :是指算法编写成程序后, 在计算机中运行时所需存储空间大小的度量。记作: S(n)=O(f(n)) 其中: n为问题的规模(或大小)
空间复杂度的度量
for(i=1; i<=n; ++i)
for(j=1; j<=n; ++j)
{ ++x; s+=x ; }
临时变量为:i , j ,s,x;空间复杂度为:O(1) ,即常量阶。
复习考研数据结构第二天!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【正点原子i.MX93开发板试用连载体验】为什么模型不能运行在NPU上

本文最早发表于电子发烧友论坛&#xff1a;【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 昨天提到要使模型运行的NPU上&#xff0c;必须先将其量化。如果对没有量化…

编程零基础教程,从知道什么是前端开始

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 鱼小皮&#xff1a;百哥&#xff0c;我想学编程&#xff0c;应该先学啥呢&#xff1f; 老百&#xff1a;小皮&#xff0c;怎么突然想学编程了&#xff0c;不会又是三分钟热度吧&…

vue学习day06-脚手架目录文件介绍与项目运行流程、组件化开发和根组件、普通组件的注册使用-局部注册、全局注册

16、脚手架目录文件介绍与项目运行流程 &#xff08;1&#xff09;脚手架目录文件介绍 &#xff08;2&#xff09;Index.html &#xff08;3&#xff09;Main.js 17、组件化开发和根组件 &#xff08;1&#xff09;组件化 1&#xff09;概念 一个页面可以拆分成一个个组件&am…

Spring源码二十二:Bean实例化流程五

上一篇Spring源码二十一&#xff1a;Bean实例化流程四&#xff0c;咱们主要分析里createBeanInstance方法Spring给我们提供给的FactoryMethod方法&#xff0c;举例说明了factoryMethod属性如何使用&#xff0c;同时简单讨论了具体实现逻辑。 这一篇咱们将进入反射实例化Bean&am…

MySQL的事务使用

文章目录 特点JDBC使用事务 特点 事务的基本属性ACID&#xff1a; 数据库事务的ACID特性是指保证数据库在执行事务操作时能够可靠和正确的四个基本属性。ACID是原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isol…

科研绘图之tSNE图

t-SNE&#xff08;t-Distributed Stochastic Neighbor Embedding&#xff0c;t分布随机邻域嵌入&#xff09;是一种用于数据降维和可视化的算法。它可以将高维数据映射到二维或三维空间&#xff0c;同时尽可能地保留数据点之间的局部关系。t-SNE特别适用于探索数据的内部结构和…

C语言 指针和数组——指针数组的应用:命令行参数

目录 命令行参数 演示命令行参数与main函数形参间的关系 命令行参数  什么是 命令行参数&#xff08; Command Line Arguments &#xff09;&#xff1f;  GUI 界面之前&#xff0c;计算机的操作界面都是字符式的命令行界面 &#xff08; DOS 、 UNIX 、 Linux &…

IEPE数据采集卡的作用说明

IEPE指的是一种自带电量放大器或电压放大器的加速度传感器。IEPE是压电集成电路的缩写。因为由加速度传感器产生的电量是很小的&#xff0c;因此传感器产生的电信号很容易受到噪声干扰&#xff0c;需要用灵敏的电子器件对其进行放大和信号调理。IEPE中集成了灵敏的电子器件使其…

连锁行业观察:一线门店设备如何运维?化“管理”为“服务”

连锁零售行业的数字化发展&#xff0c;离开不了大量智能设备的支撑&#xff0c;比如我们日常见到的各种门店互动终端、自助收银设备、无人值守售货机等等。 由于连锁行业的特性&#xff0c;这些设备往往位置分散&#xff0c;数量众多&#xff0c;难以集中管理。一旦这些设备遇…

ARM功耗管理之多核处理器启动

安全之安全(security)博客目录导读 思考&#xff1a;SecureBoot&#xff1f;多核处理器启动流程&#xff1f;PSCI启动方式&#xff1f; 一般嵌入式系统使用的都是对称多处理器&#xff08;Symmetric Multi-Processor, SMP&#xff09;系统&#xff0c;包含了多个cpu, 这几个cp…

YOLOv8改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

从零开始开发视频美颜SDK:实现直播美颜效果

因此&#xff0c;开发一款从零开始的视频美颜SDK&#xff0c;不仅可以节省成本&#xff0c;还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前&#xff0c;首先需要进行详细的需求…

MongoDB本地配置分片

mongodb server version: 7.0.12 社区版 mongo shell version: 2.2.10 平台&#xff1a;win10 64位 控制台&#xff1a;Git Bash 分片相关节点结构示意图 大概步骤 1. 配置 配置服务器 副本集 &#xff08;最少3个节点&#xff09; -- 创建数据目录 mkdir -p ~/dbs/confi…

硬件开发工具Arduino IDE

招聘信息共享社群 关联上篇文章乐鑫ESPRESSIF芯片开发简介 Arduino IDE&#xff08;集成开发环境&#xff09;是为Arduino硬件开发而设计的一款软件&#xff0c;它提供了一个易于使用的图形界面&#xff0c;允许用户编写、编辑、编译和上传代码到Arduino开发板。Arduino IDE的…

【逆向基础】十、逆向工具分享之DIE(Detect It Easy)

一、简介 DIE&#xff08;Detect It Easy&#xff09;是一款可以轻松检测PE文件的程序&#xff1b;其主要作用是查壳&#xff0c;并将pe文件的内容解析出来&#xff0c;包括PE文件中包含的导入函数、导出函数的名称及地址&#xff0c;入口函数地址等&#xff0c;是技术人员分析…

mysql高并发设计

mysql高并发设计 一、部署方案 https://blog.csdn.net/weixin_37519752/article/details/138728036 方案1&#xff1a;双主 1、优点 写入扩展性&#xff1a;两个节点都可以处理写入操作&#xff0c;提高了写入操作的扩展性。 高可用性&#xff1a;在任一节点故障时&#xff…

【Linux】静态库的制作和使用详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

【Spring Boot】Spring原理:Bean的作用域和生命周期

目录 Spring原理一. 知识回顾1.1 回顾Spring IOC1.2 回顾Spring DI1.3 回顾如何获取对象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知识回顾 在之前IOC/DI的学习中我们也用到了Bean对象&#xff0c;现在先来回顾一下IOC/DI的知识吧&#xff01; 首先Spring IOC&am…

权利之望账号注册教程 权力之望游戏客户端下载教程

权力之望&#xff0c;一款马上就要上线的新的MMORPG游戏&#xff0c;非常好玩大型多人在竞技的游戏&#xff0c;玩家在游戏中有着60多种不同的职业可以选择&#xff0c;而且整个游戏的画面非常精美&#xff0c;更有各种不同的武器装备可以选择&#xff0c;热血的战斗和各种大型…

c语言的简易教法—— 函数递归

文章目录 一、什么是递归&#xff1f;1.1递归的思想1.2递归的限制条件 二、递归案例2.1 案例1&#xff1a;求n的阶层2.1.1分析2.1.2 递归函数&#xff08;Fact&#xff09;的代码实现2.1.3 测试&#xff1a;main函数实现2.1.4 运行结果和画图推演2.1.5 扩展&#xff1a;迭代方法…