【数据结构与算法】初识时间空间复杂度

news2025/1/19 20:21:09

文章目录

        • 1.数据结构与算法概念
        • 2.时间复杂度
        • 3.大O计数法表示时间复杂度
        • 4.线性结构与非线性结构

1.数据结构与算法概念

(1)什么是数据结构

  • 数据结构指的是相互之间有一种或者多种特定的关系数据元素集合。
  • 数据结构可以分成逻辑结构和物理结构。
  • 逻辑结构:抽象意义上的结构,按照对象中元素的关系分类

在这里插入图片描述

  • 物理结构:又叫存储结构,主要有顺序存储跟链式存储

在这里插入图片描述

(2)什么是算法

  • 算法是被计算机使用来解决问题的方法,就对于程序而言,算法就是程序的灵魂,优秀的程序可以在面对大量数据计算时,依旧能够保持高速的计算。
  • 对于小型的程序来说,就算这个算法差劲,解决的问题步骤比较繁琐,这样不会有很大的关系。但是如果对数据量大的程序(如何从海量数据千万级别的数据中快速找到自己想要的一条数据),我们就需要对时间和空间有要有效的利用,也就是设计一个高效的算法,在同样的硬件设备的情况下,有时候会把速度提高十倍甚至上百倍。

(3)什么是程序

  • 程序 = 数据结构 + 算法
  • 数据是程序的中心。数据结构和算法两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,程序根本无法设计
  • 数据结构与算法关系:数据结构是底层,算法高层。数据结构为算法提供服务。算法围绕数据结构操作

2.时间复杂度

(1)什么是时间频度

  • 一个算法所花费的时间跟算法里语句的执行次数是成正比的。
  • 算法里的语句执行次数越多,说明所耗的时间就越多。
  • 一个算法的语句执行的次数被称为时间频度T(n)

(2)案例

在这里插入图片描述

3.大O计数法表示时间复杂度

(1)什么是大O计数法

  • 算法的时间复杂度通常用大O符号来表示表述,定义的形式为T[n] = O(f(n)),称T(n)受限于f(n)。
  • 如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),T(n)是关于问题规模n的函数
  • T(n)称为这一算法的“时间复杂度”。当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。

(2)常见的时间复杂度使用大O表示

  • 常数阶O(1)
int a= 0;
++a;
int c =a+1;

这个代码不管是执行了多少行,只要没有循环等这种复杂的结构,那时间复杂度就是O(1)

  • 线性阶O(n)
int sum= 0;
for(int i =1;i<=100;i++){
   sum+=i;
}

这段代码for循环里面的代码会执行n次,因为随着n的变化所消耗的时间也随之变化,这类的代码都可以使用O(n)来表示

  • 平方阶O(n²)
int sum= 0;
int n=10;
for(int j = 1;j<=n;j++){
  for(int i =1;i<n;i++){
     sum+=i;
  }
}

这段代码n是10,外层会循环执行10次,内层会循环指向10次,总共指向10*10=100次,也就是n的平方次,使用O(n2)来表示。同理,如果使用了三层循环那么时间复杂度就是O(n3)立方阶

  • 对数阶O(Logn)
int i=1
int sum=100
while(i<sum){
   i=i*2
}

这里的while循环,每经过一轮,也就是每经过一次i*2的运算,结果就会里sum的值越近 2^x=n,时间复杂度就是O(Logn)

  • 常见的算法时间复杂度由小到大排序

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(nk)<O(2n),可以看出随着规模n的不断变大,执行的效率就越低。

4.线性结构与非线性结构

(1)什么是线性结构

  • 线性结构是最常用的数据结构,它的特点是数据元素之间是一对一的关系,如数组a[0]=1,那么数组下标为0的时候就等于了1,这就是一对一的关系。
  • 线性结构的储存结构有两种,一个是顺序存储结构(以数组方式),一种是链式存储结构(链表)。顺序存储结构的线性表又被称作为顺序表,顺序表里存储的元素是连续的,分配的地址也是连续的。
  • 链式存储的线性表又被称为链表,链表里存储的元素不一样是连续的,一般所储存的数据作为一个节点,每个节点分配一个指针来找到下一个节点的位置获取相关信息。
  • 线性结构常见的有:数组、队列、栈、链表

(2)什么是非线性结构

  • 非线性结构里的各个数据元素不保持在一个线性的序列当中,每一个数据元素都可能会与0个或者是多个其他的数据元素发生联系的。

  • 线性结构常见的有:数组、队列、栈、链表

(2)什么是非线性结构

  • 非线性结构里的各个数据元素不保持在一个线性的序列当中,每一个数据元素都可能会与0个或者是多个其他的数据元素发生联系的。
  • 常见的非线性结构有:二维(多维)数组,广义表,树结构,图结构

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

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

相关文章

全网首发克莱斯勒东南大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装

文章目录前言碟盒功能1、设计指标3、外观设计4、PCB设计5、程序设计6、调试7、大捷龙车机尾插接口定义公头东南大捷龙车机白色插头模块与白色插头连接方法8、安装方法9、 使用方法9.1 CD车机按钮功能定义11、 联系我前言 ​ 之前写过四篇关于车机增加音频输入的方法。 1、07宝…

[数据结构] 并查集

并查集相关概念并查集的模拟实现1&#xff09;实现基本框架2&#xff09;实现基础操作findRoot查找元素属于哪个集合Union合并两个集合IsOneSet判断两个元素是否属于同一集合SetSize集合个数相关概念 初始时&#xff0c;每个数据的下标都为-1&#xff0c;表示10棵树&#xff1…

【EDA365电子论坛】RISC-V 能否超越 x86、Arm,成为新一代计算机系统架构?

前言 指令集架构(Instruction Set Architecture&#xff0c;缩写为ISA&#xff09;&#xff0c;是一组指令的集合&#xff0c;指令是指处理器进行操作的最小单元&#xff08;譬如加减乘除操作或者读&#xff0f;写存储器数据&#xff09;。指令集架构&#xff0c;有时简称为“架…

[附源码]SSM计算机毕业设计小超市进销存管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【js】日期控件的实现

需求&#xff1a;通过日期控件实现只显示年月 效果如下图&#xff1a; 日期控件使用的是My97DatePicker&#xff1a; 可以从官网下载&#xff1a;http://www.my97.net/&#xff0c;或者&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1KRXSjfqpyguZ67vBrOWM8g 提取码…

Python创建增量目录的代码实例

目录1、需求很简单2、代码3、使用方法1、需求很简单 比如我在做机器学习实验的时候&#xff0c;实验结果的保存路径是’runs/exp’。 这样就会出现一个问题&#xff1a;当我第二次运行程序的时候&#xff0c;如果我忘记更改代码中的路径名或者清除上次实验结果&#xff0c;这…

BurpSuite官方实验室之逻辑漏洞

BurpSuite官方实验室之逻辑漏洞 这是BurpSuit官方的实验室靶场&#xff0c;以下将记录个人逻辑漏洞共11个Lab的通关过程 Web Security Academy: Free Online Training from PortSwigger lab1&#xff1a; Excessive trust in client-side controls 过度信任客户端控件 目…

PyTorch学习笔记-Convolution Layers与Pooling Layers

1. Convolution Layers 由于图像是二维的&#xff0c;因此基本上最常用到的就是二维的卷积类&#xff1a;torch.nn.Conv2d&#xff0c;官方文档&#xff1a;torch.nn.Conv2d。 Conv2d 的主要参数有以下几个&#xff1a; in_channels&#xff1a;输入图像的通道数&#xff0c…

IDEA关于数据库报错SQL dialect is not configured或Unable to resolve table ‘表名‘

目录一、SQL dialect is not configured1.1 报错场景展示1.2 方式一&#xff0c;万能altenter1.3 方式二&#xff0c;在setting中设置二、Unable to resolve table 表名2.1 报错场景展示2.2 方式一&#xff0c;万能altenter2.3 方式二&#xff0c;在setting中设置一、SQL diale…

vscode开发STM32(三)---调试篇

vscode开发STM32&#xff08;三&#xff09;—调试篇 文章目录vscode开发STM32&#xff08;三&#xff09;---调试篇前提条件配置调试配置JLink使用JLinkGDB进行调试配置stlink使用openOCD进行调试完整的launch文件内容前提条件 安装Cortex-Debug插件 安装OpenOCD 安装JLink驱…

LeetCode HOT 100 —— 48.旋转图像

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 思路 方法一&#xff1a;使用辅助数组 可以得出规律&#xff0c;将图像旋…

集合框架----源码解读HashMap篇(一)

1.HashMap官方介绍 基于哈希表的Map接口实现。该实现提供了所有可选的映射操作&#xff0c;并允许空值和空键。(HashMap类大致相当于Hashtable&#xff0c;除了它是非同步的&#xff0c;并且允许为空值。)这个类不保证映射的顺序;特别是&#xff0c;它不能保证顺序随时间的推移…

Nodejs -- Express托管静态资源

文章目录托管静态资源1 expess.static()2 托管多个静态资源目录3 挂载路径前缀托管静态资源 1 expess.static() express提供了一个非常好用的函数&#xff0c;叫做express.static()&#xff0c;通过它&#xff0c;我们可以非常方便地创建一个静态资源服务器&#xff0c;例如&…

PG::FunboxEasyEnum

nmap -Pn -p- -T4 --min-rate1000 192.168.81.132 nmap -Pn -p 22,80 -sCV 192.168.81.132 80端口是Apache2 Ubuntu的默认页面 尝试路径爆破 /mini.php可以进行文件上传 直接上传reverse-php-shell 上传linpeas脚本进行枚举&#xff0c;得到oracle用户的密码hash oracle…

2022-11-28-大数据可视化“可视化国产/进口电影票房榜单”分析,特征维度大于50

可视化国产/进口电影票房榜单前言数据分析数据可视化过程分析总结前言 党的十八大以来&#xff0c;国产电影产业与事业快速发展&#xff0c;创作水平不断提高&#xff0c;题材类型丰富多元&#xff0c;受众口碑不断提升&#xff0c;在市场竞争中表现愈发突出&#xff0c;已成为…

《论文阅读》BA-NET: DENSE BUNDLE ADJUSTMENT NETWORKS

留个笔记自用 BA-NET: DENSE BUNDLE ADJUSTMENT NETWORKS 做什么 首先是最基础的&#xff0c;Structure-from-Motion&#xff08;SFM&#xff09;&#xff0c;SFM可以简单翻译成运动估计&#xff0c;是一种基于dui8序列图片进行三维重建的算法。简单来说就是是从运动中不同角…

【Python】记录从3.9升级到3.11踩的坑

写在前面的话&#xff1a;如果想体验python3.11&#xff0c;不推荐生产环境升级&#xff0c;可以现在测试环境试试看 环境变化 原始环境 Python3.9&#xff0c;有挺多安装的第三方库&#xff0c;有自己写的类和方法&#xff0c;程序一切运行正常 升级环境 Python3.11&#…

如何获取Adreno GPU数据

什么是GPU GPU&#xff08;Graphic Processing Unit&#xff09;是图形处理器&#xff0c;相当于在计算机和移动终端上做图形图像运算工作的微处理器&#xff0c;显示芯片。通过向量计算和并行计算等方式加速了原有的计算工作&#xff0c;能够更好地处理几何转换和光照计算等&a…

如何与意法半导体STMicro建立EDI连接?

项目背景 意法半导体STMicro是全球最大的半导体公司之一&#xff0c;2010 年净收入 103.5 亿美元&#xff0c;2011 年第二季度净收入 25.7亿美元。 以业内最广泛的产品组合著称&#xff0c;凭借多元化的技术、尖端的设计能力、知识产权组合、合作伙伴战略和高效的制造能力&…

pdf怎么编辑?分享两款pdf编辑软件,编辑pdf也很简单!

pdf怎么编辑&#xff1f;其实也很简单&#xff0c;现在跟大家分享两款pdf编辑软件&#xff0c;可以让我们对pdf实现自由编辑修改&#xff0c;有了这两款pdf编辑软件&#xff0c;编辑pdf将不再困难。 pdf编辑软件一&#xff1a;万兴pdf编辑软件 万兴pdf是一款受众广泛&#xff0…