数据结构-时间复杂度与空间复杂度详解

文章目录

    • 算法效率
    • 时间复杂度
      • 概念
      • 计算
      • 例1
      • 例2
      • 例3
      • 补充
      • 例4
    • 空间复杂度
      • 例1
      • 例2


算法效率

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

时间复杂度

概念

在计算机科学中,算法的是时间复杂度是一个函数,它定量的描述了该算法运行的时间,但是理论上是不能够算出来的,因为同一个算法在不同机器上的运行时间是不一样的,这取决于机器的效率。又因为一个算法花费的时间和和语句的执行次数成正比,所以我们可以通过算执行次数来代替算时间。也就是说算法中基本操作的执行次数即时间复杂度

计算

实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这里我们使用大0的渐进表示法
大0符号(Big O notation):是用于描述函数渐进行为的数学符号。推导大0阶方法:
1、用常数1取代运行时间中的所有加法常数,即常数次数都用O(1)表示.
2、在修改后的运行次数函数中,只保留最高阶项,如:N^2+N+4>>O(N ^2)
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大0阶,如:2N>>O(N)
4、有n次和常数次时常数次舍掉如:N+3>>O(N)

例1

简单循环
代码:
在这里插入图片描述
上面代码中一共执行了 5+3=8次,根据大O渐进法来说所有的常数都表示为O(1).
所以这个代码的时间复杂度为O(1).

例2

还是举个简单的例子来计算
代码:在这里插入图片描述
上面的代码一共执行了n+5
根据大O渐进法来说这里的 5 舍掉,所以这里的时间复杂度为O(n)

例3

冒泡排序(不懂的话可以看我主页哦,有详解)
在这里插入图片描述
冒泡排序是这里是一个等差数列,n n-1 n-1……1–(N+1)N/2=(N*N-N)/2,根据大O渐进法来说这里的1/2,和N都要舍掉
所以这里的时间复杂度为O(N^2)

补充

在这里插入图片描述

例4

二分查找法(不懂的话可以看我主页哦,有详解)
在这里插入图片描述
二分查找每查找一次都折一半,那我们将过程反过来列式 >>相当于每找一次就乘2 222*2=n,**假设查找x次>>2^x=n>>lon2N(这里2为底)也可以写成lonN
所以二分查找法的
时间复杂度为O(lonN)**

有的童鞋说是不是一层循环时间复杂度就是O(n),两层就是O(N^2)捏,其实这是错的

从二分查找法就可以看出,二分查找有一层循环但是时间复杂度不为O(n)
这是要具体分析算法才能得出的

空间复杂度

空间复杂度的概念:空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是额外变量的个数空间复杂度计算规则基本跟时间复杂度类似,也使用大0渐进表示法。
还有一个点是空间是可以重复利用的

例1

给数组赋值
在这里插入图片描述
这里用了三个额外的变量p(指针变量),i,r,再根据大O渐进法来讲常数都用O(1)表示
所以这里的空间复杂度为O(1);

例2

交换数组

在这里插入图片描述
这里创建额外的数组用了n个空间,还有i,r,p(指针变量)三个变量,一共n+3,
根据大O渐进法这里的空间复杂度为O(n)

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

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

相关文章

新一轮SocialFi浪潮来袭,Atem Network 再次打响注意力争夺战

火爆如潮的 Atem Network 再次从 CyberConnect 以及 Friend.tech 手中接过 SocialFi 赛道的热度大棒,同时这也表明,协议层仍将是 Web3 社交领域的主要叙事。 前不久,Web3社交协议Atem Network 在白皮书中披露了ATEM的代币经济模型&#xff0c…

牛客网刷题笔记231112 最小k位数+二叉树层序遍历+SQL异常邮件概率

算法题牛客网NC119 最小的k个数 题目: 用了一下python列表的便利,不知道在面试时允许用不。当然最简单的方法其实是直接sort()一下取前k位数即可。本次写的思路如下: 用一个最大容量为k的列表存储结果,遍历n个元素,当…

技术架构 - 应用数据分离,应用服务集群架构

前言 上一篇文章介绍了单机架构,由于性能瓶颈,满足不了高访问量,所以演化出了数据分离架构。 这种架构也很简单只是将应用服务和数据库服务分离开来,避免单一架构的资源争夺的情况。 一、 应用数据分离架构 1. 简介 应用服务和…

ChatGPT助力高效办公——神奇的效率工具Airy

Airy是一款免费而又强大的高效办公软件,用户可以通过快捷键和丰富的内置插件,充分发挥GPT-3.5模型的强大功能,轻松实现搜索、翻译、文本生成与写作、文本概括与总结,同时还可以作为一款日程提醒工作,记录和提醒每天要做…

现场直击!触想智能亮相德国2023 SPS展会

当地时间11月14日上午9时 2023 年(德国)纽伦堡国际工业自动化及元器件展览会 SPS 展(以下简称:SPS展会)正式拉开帷幕,触想智能与来自全球各地的领先科技公司及前沿业者齐聚盛会,共赴一场科技与创新交汇的“饕餮盛宴”。 △ 2023 SPS展会开幕(…

初识VBA代码及应用VBA代码第四节:如何录制宏

《VBA之Excel应用》(10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非…

NSSCTF第12页(1)

[FSCTF 2023]细狗2.0 应该是和[HUBUCTF 2022 新生赛]ezsql搞混掉了 点击按钮出现了 发现输入什么回显什么 伪协议也不行 看源代码发现了这个玩意 输入了1;发现了其他回显 ls 发现了两个文件 发现被限制了 不知道是cat还是空格 绕过 直接找吧还是 得到flag [SCTF 2021]loginm…

系列八、Mybatis一对多查询,只查询出了一条记录

一、Mybatis一对多查询,只查询出了一条记录 1.1、问题说明 典型的权限管理框架的数据库表中,一般会存在这样3种角色的表,即用户表、角色表、用户角色关联表,表设计好之后,往这三张表中初始化了一些测试数据&#xff0…

Debezium-Embedded 实时监控MySQL数据变更

1.Debezium-Embedded 简介 Debezium连接器的操作通常是将它们部署到Kafka Connect服务,并配置一个或多个连接器来监控上游数据库,并为它们在上游数据库中看到的所有更改生成数据更改事件。这些数据更改事件被写入Kafka,在那里它们可以被许多不…

类似于推箱子的小游戏 寻找 最短路径

实现效果如下 类似 推箱子小游戏 的变种 C/C版本 BFS最短路径 黑色代表墙壁 不能越过 蓝色代表HOME点 灰色代表要找的小箱子 绿色代表路径 最终目标是将灰色的小箱子移动到蓝色的HOME点 需要两次搜索 第一次是 出发点到灰色小箱子 第二次是灰色小箱子到蓝色HOME点 BF…

Web服务Openlab的搭建

Web服务Openlab的搭建 网站需求: 基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站 基于 www.openlab.com/student 网站访问学生信息, 基于 www.openlab.…

MongoDB入门级别教程全(Windows版,保姆级教程)

下载mongodb 进入官网: Download MongoDB Community Server | MongoDB 选择msi,Windows版本 下载完后直接双击: 选择complete 这里建议改地方: 我这里直接改成d盘:work目录下面: 点击next: 因…

spring cloud-注册中心(Eureka)

一、服务注册中心组件(*) 定义:服务注册中心就是在整个微服务架构单独抽取一个服务,该服务不做项目中任何业务功能,仅用来在微服务中记录微服务、对微服务进行健康状态检查,及服务元数据信息存储常用的注册中心:eurek…

[蓝桥杯复盘] 第 3 场双周赛20231111

[蓝桥杯复盘] 第 3 场双周赛20231111 总结深秋的苹果1. 题目描述2. 思路分析3. 代码实现 鲜花之海1. 题目描述2. 思路分析3. 代码实现 斐波拉契跳跃2. 思路分析3. 代码实现 星石传送阵2. 思路分析3. 代码实现 六、参考链接 总结 做了后4题。https://www.lanqiao.cn/oj-contes…

『亚马逊云科技产品测评』活动征文|阿里云服务器亚马逊服务器综合评测

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、亚马逊&阿里云发展历史介绍1.1 亚马逊发展历史1.2…

Centos, RockyLinux 常用软件安装汇总

一、基本指令: 命令作用clear清屏pwd显示当前路径cat / more显示文本文档uname -a查看当前版本hostnamectl查看当前版本cat /etc/redhat-release查看当前版本free查看剩余内存df -h[查看磁盘剩余空间]du -sh 查看文件夹名"dir"占用的空间lsof -i:8080查看…

【原创】java+swing+mysql车辆维修管理系统设计与实现

摘要: 车辆维修管理系统是一个用于管理和追踪车辆维修过程的系统,它能够提高效率,减少错误,并提供详细的车辆历史记录,可以帮助车辆维修企业实现信息化管理,提高工作效率和客户满意度,降低运营…

DevEco studio配置自己的虚拟环境

开始使用DevEco studio时使用的时华为预置的手机,通过网络访问,但是近期发现有两点问题 网络不稳定的时候机器很卡现在资源很难使用 DevEco提供了自定义环境的搭建,从而解决上面的问题 这里有几点问题需要硬盘至少10G空闲(应该问题…

【考研数据结构代码题6】构建二叉树及四大遍历(先中后层)

题目:请你编写完整的程序构建一棵二叉树并对其进行先序遍历、中序遍历、后序遍历与层次遍历,分别打印并输出遍历结果 难度:★★★ 二叉树的存储结构 typedef struct Node{char data;//数据域struct Node* left;//左子树struct Node* right;//…

【评论送书】十本架构师成长和软件架构技术相关的好书(可以任选)

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 参与规则 本次送书1~5本参与方式:关注博主、点赞、收藏、评论(从评论区…