数据结构_复杂度讲解(附带例题详解)
文章目录
- 前言
- 什么是数据结构?
- 什么是算法?
- 一. 算法的时间复杂度和空间复杂度
- 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循环会执行2N次;
while循环固定 – 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)。
- 在这个表达式里面一般会去阶数最高的一个项,因为这个项是对表达式影响最大的。
- 其次还会忽略掉它的系数
三. 空间复杂度
是对一个算法在运行过程中额外临时占用存储空间大小的量度。
空间复杂度不是程序占用了多少 bytes 的空间,所以空间复杂度算的是变量的个数
空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法
注意:
函数运行时所需要的栈空间(存储函数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时候显示申请的额外空间来确定。
实例
实例问题解析
- 问题一:不算,因为它不是为了解决这个排序额外开的空间,因为这个数组存的是本来提供的数据样本。
- 问题二:是为了解觉这个排序,额外开的空间。
- 问题三:这三个变量是因为我们在排序的过程中我们要进行 循环、迭代 … 定义的变量。三个 — 常数个 — 空间复杂度 – 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卷)》。 …...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
