嵌入式学习--数据结构+算法

news2024/9/28 4:56:02

嵌入式学习--数据结构+算法

数据结构

1.1数据

1.2逻辑结构

1.3存储结构

1)顺序存储结构

2)链式存储结构

1.4操作(数据的运算)

算法

2.1算法与程序

2.2算法与数据结构

2.3算法的特性

2.4如何评价一个算法的好坏?

2.5时间复杂度

2.6空间复杂度

数据结构

数据的逻辑结构、存储结构、数据的操作(数据的运算)

1.1数据

数据:不再是单一的数值,类似集合

数据元素:数据的基本单位,由若干数据项组成

数据项:数据的最小单位,描述数据元素信息

节点:就是数据元素

1.2逻辑结构

逻辑结构:元素与元素之间的关系

1)线性关系 ---》线性结构 -----》一对一 ----》线性表

2)层次关系 ---》树形结构 -----》一对多 ----》树

3)网状关系 ---》图状结构 ----》多对多 ---》图

1.3存储结构

存储结构:数据的逻辑结构在内存中的具体实现

1)顺序存储结构

数组:在内存当中一段连续的内存空间中保存数据(c语言中的一维数组)

2)链式存储结构

特点:内存不连续,通过指针进行连接

链表结构体:

struct node_t

{

int data;//数据域

struct node_t * next ;//指针域,存放下一个节点的地址

};

struct node_t A = {1,NULL};

struct node_t B = {2,NULL};

struct node_t C = {3,NULL};

  1. next = &B;
  2. next = &C;

3)索引存储结构

提高查找速度

索引表 + 数据文件

姓氏 + 地址 名字 + 电话号码

4)散列存储结构

数据在存储的时候与关键码之间存在某种对应关系

存的时候按照对应关系存

取的时候按照对应关系取

1.4操作(数据的运算)

增、删、改、查

算法

2.1算法与程序

程序:用计算机语言对算法的具体实现

2.2算法与数据结构

算法 + 数据结构 = 程序

算法的设计:取决于选定的逻辑结构

算法的实现:依赖于采用的存储结构

2.3算法的特性

1)有穷性 //算法的执行步骤是有限的

2)确定性 //每一个步骤都有明确含义,无二义性

3)可行性 //能够在有限的时间内完成

4)输入

5)输出

2.4如何评价一个算法的好坏?

正确性 :保证算法可以正确实现功能

易读性 :容易被解读

健壮性 : 容错处理

高效性 :执行效率,算法执行快慢容易受到计算机性能的影响,

不可以作为评判算法高效性的标准,这通过可执行语句重复执行

次数来衡量算法是否高效 。(时间复杂度)

低存储型 : 占用空间少

2.5时间复杂度

算法的可重复执行语句执行的次数

通常时间复杂度用一个问题规模函数来表达

T(n) = O(f(n))

T(n) //问题规模的时间函数

n //问题规模,输入量的大小

O //时间数量级

f(n) //算法的可执行语句重复执行的次数 用问题规模n的某个函数f(n)来表达

例1:

求1+2+3+..+n

方法1:

int sum = 0;

for(i=1;i<=n;i++) n==10,10次 n==10000,10000次

sum+=i;

f(n) = n

T(n) = O(n)

方法2:

等差数列{an}的通项公式为:an=a1+(n-1)d。前n项和公式为:Sn=n*a1+n(n-1)d/2或Sn=n(a1+an)/2 。

int sum = n(1+n)/2; n==100 ,1次;

f(n) = 1

T(n) = O(1)

例2:

int i,j;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

printf("ok\n");

f(n) = n^2;

例3:

int i,j;

for(i=0;i<n;i++)

for(j=0;j<=i;j++)

printf("ok\n");

i 次数

0 1

1 2

2 3

n-1 n

f(n) = 1+2+3+...+n = (1+n)n/2 = n/2+n^2/2

n^2

计算大O的方法:

(1)根据问题规模n写出表达式 f(n)

(2)只保留最高项,其它项舍去

(3)如果最高项系数不为1,除以最高项系数

(4)如果有常数项,置1

f(n) = 8; O(1)

f(n)= 3n^5 + 2n^3 + 6*n^6 + 10 ; O(n^6)

2.6空间复杂度

算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。

算法占用的存储空间包括:

1)输入输出数据所占空间

2)算法本身所占空间

3)额外需要的辅助空间

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

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

相关文章

在IDEA中构建Jar包,安装Jar包到Maven仓库并在Maven项目中使用

文章目录 0. 关于本文1. IDEA构建Jar包1.1 准备一份Java代码&#xff08;就是你要构建工件的代码&#xff09;1.2 进行如下步骤构建工件 2. 关于Maven3. 将Jar包安装到Maven仓库4. 使用安装的Jar包依赖 0. 关于本文 本文内容&#xff1a; 借助IDEA构建Jar包将Jar包安装到Mave…

设计模式之门面(Facade)模式

前言 在组建构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题、甚至跟本无法实现。采用添加一层&#xff08;间接&#xff09;稳定接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案 定义 “接口隔离” 模式。为子系统中的一组接口提供一个一…

【北京二号卫星】

北京二号卫星 北京二号卫星是中国自主研制的高分辨率遥感卫星之一&#xff0c;具有多方面的特点和广泛的应用价值。以下是对北京二号卫星的详细介绍&#xff1a; 一、基本信息 名称&#xff1a;北京二号类型&#xff1a;民用商业遥感卫星星座组成&#xff1a;由三颗高分辨率卫…

【PDCCH(一)】

LTE/NR中&#xff0c;采用了OFDM正交频分复用方式&#xff0c;也就是在频域上使用多个子载波&#xff0c;这些子载波互相正交&#xff1b;在时域上采用帧结构的方式&#xff0c;用不同的帧结构去区分不同的用户&#xff0c;不同的资源&#xff0c;信道等等。 所以我们常常把时间…

校园外卖系统SpringBoot免费分享

今天我们分享一个非常实用的校园外卖系统&#xff0c;基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的瑞吉外卖案例项目&#xff0c;经过站长的进一步改进和优化&#xff0c;提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue…

web前端-CSS引入方式

一、内部样式表 内部样式表(内嵌样式表)是写到html页面内部,是将所有的 CSS 代码抽取出来,单独放到一个<styie>标签中。 注意: ① <style>标签理论上可以放在 HTML文档的任何地方&#xff0c;但一般会放在文档的<head>标签中 ② 通过此种方式&#xff0c;可…

【多样化的思想】基于执行档案的测试

下面我们讨论另一种关于多样性的观点。我们知道&#xff0c;对被测对象而言&#xff0c;测试输入空间代表的是各种可能的外部环境条件。如果两个测试输入点距离比较远&#xff0c;说明在这两个点上&#xff0c;被测对象所面对的外部环境条件很不一样&#xff0c;所以我们说&…

RabbitMQ的高级特性-消息确认机制

对于RabbitMQ发送消息到消费端的可靠性保障 引入&#xff1a;发送者发送消息后&#xff0c;到达消费端之后会出现一下两种情况&#xff1a; ①消息处理成功 ②消息处理异常 RabbitMQ向消费者发送消息之后, 就会把这条消息删掉, 那么第两种情况, 就会造成消息丢失&#xff0…

fmql之字符驱动设备(3)-并发与竞争

学会使用设备树后&#xff0c;要学习linux驱动编写中容易出现的”并发与竞争“。 代码是在之前代码的基础上进行修改。 并发与竞争 &#xff08;本部分来自于正点原子pdf&#xff09; 什么是并发与竞争&#xff0c;为什么会出现并发与竞争&#xff1a; 要保护的内容是&#…

基于TSN的实时通信网络延迟评估技术

论文标题&#xff1a;A TSN-based Technique for Real-Time Latency Evaluation in Communication Networks 作者信息&#xff1a; Alberto Morato, Claudio Zunino, Manuel Cheminod, Stefano Vitturi&#xff0c;来自意大利国家研究委员会&#xff0c;CNR-IEIIT。电子邮件:…

深度学习实战TT100K中国交通标志检测【数据集+YOLOv5模型+源码+PyQt5界面】

AI深度学习TT100k交通标志识别 文章目录 研究背景代码下载链接一、效果演示1.1 图像演示1.2 视频演示 二、技术原理2.1 整体流程2.2 TT100K中国交通标志数据集介绍2.3 YOLOV5 TT100K中国交通标志检测原理2.3.1 概述2.3.2 输入层2.3.3 Backbone层2.3.4 Backbone层2.3.5 Head层 2…

【人人保-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

【时时三省】(C语言基础)指针笔试题6

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 笔试题6 首先aa&#xff3b;2&#xff3d;&#xff3b;5&#xff3d;是二维数组 也就是说它有两行第一行是1 2 3 4 5 第二行是6 7 8 9 10 然后&aa取出的数组的地址 &aa1就直接跳到第…

第1章 C++初识

1.1 编写第一个C程序 1.打开Visual Studio点击"创建新项目" 2.点击"空项目"&#xff0c;并点击"下一步" 3.设置"项目名称"并"设置地址" 4.打开项目后&#xff0c;右击"源文件"并选择"添加"的"新建…

国产操作系统(统信UOS)网络安全等级保护基础安全加固

统一操作系统UOS是由多家企业共同打造的中文国产操作系统。 一、设置口令复杂度策略和有效期 首先安装libpam-pwquality依赖包 口令复杂度策略通过libpam-pwquality依赖包进行设置 依赖包的安装命令&#xff1a;sudo apt-get install libpam-pwquality。 依赖包的查看方式执…

新茶饮卷出海,本土化成胜败关键

爱扬格说&#xff1a;“在那海水酣睡的宫殿里&#xff0c;铺满了多少奇珍异宝。”如今&#xff0c;新茶饮品牌正掀起出海狂潮&#xff0c;挖掘来自海外市场的财富机会。 近日&#xff0c;茶百道股价实现十连涨。消息面上&#xff0c;公司在韩国首尔建大站新店正式对外营业。根…

复现 BEVfusion bug集合(4090d)

目录 写在前面的话Bug 汇总1. python版本2. cuda版本3. mmdet3d版本4. mmcv版本5. mmdet版本 后期工作&#xff08;看到numpy说明成功一半&#xff09;6. numpy版本7. timm安装8. yapf 版本 写在前面的话 主要的问题还是mmcv库的问题&#xff0c;这个版本维护太差了&#xff0…

Idea中的导出分包层次结构图(项目结构树)

导出分包层次结构图 在Terminal中, 输入命令&#xff1a;Get-ChildItem “项目地址” | Tree | Out-File -FilePath “输出地址” Get-ChildItem D:\work\workspace\test | Tree | Out-File -FilePath D:\test.txt

HCIP--以太网交换安全(一)

以太网交换安全概述&#xff1a;以太网交换安全是一系列技术和策略的集合&#xff0c;旨在保护以太网交换机免受各种网络攻击和威胁。 端口隔离 一、端口隔离概述&#xff1a; 作用&#xff1a;可以实现同一个VLAN内端口的隔离 优势&#xff1a; 端口隔离功能为用户提供了更…

央企办医布局智慧医康养,环球医疗(2666.HK)让养老有“医”靠

投资传奇查理芒格说&#xff1a;“我给自己设定的目标是追求平常人没有的常识。”只有挖掘出市场潜移默化的趋势&#xff0c;才能抓住投资机遇。 当下&#xff0c;资本市场一个被低估的产业趋势是&#xff0c;医疗健康行业大并购时代悄然开启&#xff0c;头部上市公司对并购产…