当前位置: 首页 > news >正文

数据结构_复杂度讲解(附带例题详解)

文章目录

  • 前言
  • 什么是数据结构?
  • 什么是算法?
  • 一. 算法的时间复杂度和空间复杂度
    • 1.1 算法效率
    • 1.2 如何衡量一个算法好坏
  • 二. 时间复杂度
    • 2.1 时间复杂度概念
      • 例题一
        • 例题一分析
      • 实例一
        • 实例一分析
  • 三. 空间复杂度
      • 实例
        • 实例问题解析
  • 四. 常见复杂度对比
  • 五. 常见时间复杂度以及复杂度oj练习


前言

什么是数据结构?

数据结构是计算机科学中研究数据组织、存储、管理和操作的方法和原则。它涉及到各种不同的数据类型和数据组织方式,包括数组、链表、树、图等。数据结构的设计和实现可以影响到程序的效率和可靠性,因此是计算机科学中非常重要的一个领域。
  • (数据结构是计算机存储、组织数据的方式,指相互之间在一种或多种特定关系的数据元素的集合)
  • (数据结构就是在内存当中管理数据(管理的核心就是增、删、查、改),在内存中管理数据有很多种方式,比如说链型结构…不同结构有他们各式各样的优越势)

什么是算法?

  • 算法就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果
  • (算法是对这些数据进行一些处理,就是排序、查找、这些。然后达到我们想要的目的)

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

写完一个算法后呢,要评估一下,这个算法效率上跑的怎么样,一个算法衡量它最重要的标准就是它的性能如何,所以数据结构里面给出了评估它一个性能的标准,叫做: 复杂度的计算。 分下来叫:时间复杂度 和 空间复杂度。

1.1 算法效率

算法效率是衡量算法运行时间和所需资源的指标。它可以用时间复杂度和空间复杂度来表示。算法效率越高,运行速度越快,所需资源越少。

1.2 如何衡量一个算法好坏

算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。 因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的 即时间复杂度和空间复杂度。

二. 时间复杂度

2.1 时间复杂度概念

在计算机科学中,算法的时间复杂度是一个函数 ,它定量描述了该算法的运行时间。时间复杂度是衡量算法时间效率的指标。它表示算法运行时间与输入规模的增长关系。常见的时间复杂度有 O(1)、O(log n)、O(n)、O(n log n)、O(n²) 等。时间复杂度越低,算法效率越高。

即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。

例题一

例题一分析

第一个for循环里嵌套了一个for循环,总的循环会执行NN次;
第二个for循环会执行2
N次;
while循环固定 – 10 次 ;

所以Func1 执行的基本操作次数是:N^2+2*N+10

但是,我们需要注意的是,实际我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而是只需要大概执行次数,抓大头,那么这里我们使用大O的渐进表示法。

例如:N^2+2*N+10
当 N = 10 F(N) = 130 ;
N = 100F(N) = 10210 ;
N = 1000F(N) = 1002010 ;


随着N越来越大,2N+10的值与N^2的值相比 2N+10的值太小,可以忽略,那么这里用大O渐进表示法 时间复杂度记为 O(N^2)。

实例一

实例一分析

Func2准确的时间复杂度是: 2N+10:这个 +10 对结果影响不大,可以忽略,省略掉。
那最后是
O (2N)
还是O (N) 呢。
为什么最后取得是O (N)。

  1. 在这个表达式里面一般会去阶数最高的一个项,因为这个项是对表达式影响最大的。
  2. 其次还会忽略掉它的系数

三. 空间复杂度

是对一个算法在运行过程中额外临时占用存储空间大小的量度。
空间复杂度不是程序占用了多少 bytes 的空间,所以空间复杂度算的是变量的个数
空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法

注意:
函数运行时所需要的栈空间(存储函数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时候显示申请的额外空间来确定。

实例

实例问题解析
  1. 问题一:不算,因为它不是为了解决这个排序额外开的空间,因为这个数组存的是本来提供的数据样本。
  2. 问题二:是为了解觉这个排序,额外开的空间。
  3. 问题三:这三个变量是因为我们在排序的过程中我们要进行 循环、迭代 … 定义的变量。三个 — 常数个 — 空间复杂度 – O(1) --不是一个,是常数个。

四. 常见复杂度对比

五. 常见时间复杂度以及复杂度oj练习

相关文章:

数据结构_复杂度讲解(附带例题详解)

文章目录 前言什么是数据结构?什么是算法?一. 算法的时间复杂度和空间复杂度1.1 算法效率1.2 如何衡量一个算法好坏 二. 时间复杂度2.1 时间复杂度概念例题一例题一分析 实例一实例一分析 三. 空间复杂度实例实例问题解析 四. 常见复杂度对比五. 常见时间…...

学习MLPERF

测试基准与标准 | BenchCouncil 其中涉及AI的有如下: AI (1) AIBench Training AIBench 培训采用平衡的 AI 基准测试方法,考虑全面性、代表性、可负担性和可移植性。该方法广泛调查人工智能任务和模型,并在最大程度上涵盖了算法级、系统级…...

openEuler-20.03 LTS管理用户和用户组

openEuler-20.03 LTS 管理用户和用户组的官方文档,在这里。补充一下关于如何在 openeuler 上创建启用 sudo 新用户(无需修改服务器 /etc/sudoers 文件)的一个小知识点。 创建启用 sudo 新用户 该 sudo 命令提供了一种向普通用户授予管理员特权…...

什么是读写锁

读写锁 读写锁有3 种状态:读模式下的加锁状态、写模式下的加锁状态和不加锁状态,一次只有一个线程可以占有写模式的读写锁,但是可以有多个线程同时占有读模式的读写锁。因此可知,读写锁比互斥锁具有更高的并行性! 读…...

低代码助力企业数字化转型

在当今这个数字化快速发展的时代,企业面临的竞争越来越激烈,数字化转型已成为企业发展的必经之路。低代码平台作为一种新型的开发工具,正在逐渐成为企业数字化转型的重要助力。本文将从数字化转型背景、低代码平台介绍、低代码平台的应用、低…...

Linux 作业

一. 题目 二.作业内容 第一题: 因老师要求上传安装后远程连接XShell截图,如下: 制作yum缓存:[rootRHEL8 ~]# yum makecache 安装gcc:[rootRHEL8 ~]# yum install gcc -y 制作快照:快照,初始 s…...

【数据分享】2005-2022年全国民航机场客货吞吐量和起降架次数据

机场是一个城市对外联系的重要渠道,机场的旅客吞吐量和货物吞吐量是体现一个城市对外联系程度的重要指标。 本次我们给大家分享的是2005-2022年我国民航机场的旅客吞吐量、货邮吞吐量、起降架次数据。数据格式为Excel和Shp两种格式。数据坐标为WGS1984。原始数据来…...

清华博士面试的准备(已通过)

内修(30%) 不管如何 任何人都不能影响你的心态。因为冷静、理性,才能处理好95%以上的问题。剩下的5%我可以不拥有。不能既要、又要、还要。尊重客观规律。放下我执。 价值导向、解决问题为导向。 允许一切事情的发生,是我们最大的…...

requests爬虫详解

Requests 安装 pip install requests 示例 from fake_useragent import UserAgent import requestsdef cra1_1(): url http://xx/front/website/findAllTypes headers {User-Agent: UserAgent().chrome} resp requests.get(url, headersheaders) result resp.json()i…...

oracle的正则表达式(regular expression)

当前,正则表达式已经在很多软件中得到广泛的应用,包括Linux, Unix,HP等操作系统,PHP,C#,Java等开发环境,ORACLE则在10G中推出了自己的正则表达式。 Oracle 10g正则表达式提高了SQL灵活性&#…...

sh脚本 单独可以执行,放到crontab中不执行(定时清空redis)

1.原因: 执行环境的不同 2.解决办法: 添加环境变量 PATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH 3. 完整示例: #!/bin/shPATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:…...

mysql 半同步复制模式使用详解

目录 一、前言 二、mysql主从架构简介 2.1 mysql主从复制架构概述 2.2 为什么使用主从架构 2.2.1 提高数据可用性 2.2.2 提高数据可靠性 2.2.3 提升数据读写性能 2.3 主从架构原理 2.4 主从架构扩展 2.4.1 双机热备(AB复制) 2.4.2 级联复制 2…...

以太坊代币标准ERC20、ERC721

两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善;在ERC中提出了很多标准,用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…...

编写基于冒泡排序算法的qsort函数

目录 1.简单认识冒泡排序 2.进入正文分析如何实现函数 3.1比较两个相邻元素的大小 3.2比较两个相邻元素大小后要换函数 4.my_qsort函数: 5.总结: 1.简单认识冒泡排序 冒泡排序的步骤如下: 比较相邻的两个元素,如果第一个元素比…...

有什么推荐使用的企业上网行为管理软件?

在当今信息化社会,企业的上网行为管理越来越重要。企业上网行为软件是一种能够监控和管理企业员工上网行为的工具,它可以帮助企业更好地管理网络资源,提高工作效率,保护企业信息安全,并符合相关的法律法规。本文将深入…...

机器学习第五课--广告点击率预测项目以及特征选择的介绍

这个项目的主要的目的是通过给定的广告信息和用户信息来预测一个广告被点击与否。 如果广告有很大概率被点击就展示广告,如果概率低,就不展示。 因为如果广告没有被点击,对双方(广告主、平台)来讲都没有好处。所以预测…...

细说tcpdump的妙用

原文地址:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 tcpdump命令最初设计用于观察TCP/IP性能问题,它是一个用于截取网络分组,并输出分组内容的工具。tcpdump可以将网络中传送的数据包的报文头完全截获下来提供分析,它支持针…...

【深度学习实验】前馈神经网络(七):批量加载数据(直接加载数据→定义类封装数据)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 直接加载鸢尾花数据集 a. 加载数据集 b. 数据归一化 c. 洗牌操作 d. 打印数据 2. 定义类封装数据 a. __init__(构造函数:用于初始化数据集对象) b.…...

气体放电模拟装置中1Pa~101kPa范围内的真空度控制技术

摘要:针对微间隙气体放电特性分析中需要对不同真空压力进行精密控制的要求,本文提出了相应的解决方案。解决方案采用了双路调节技术,由真空计、电控针阀和真空压力控制器组成进气和排气控制回路,可实现真空度1Pa~101kPa全量程范围…...

华为OD机试 - 构成正方形的数量 - 数据结构map(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 …...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘&#xf…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...