首页 > 编程语言 >嵌入式学习--数据结构+算法

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

时间:2024-09-27 20:51:57浏览次数:10  
标签:存储 -- 复杂度 嵌入式 算法 数据结构 数据 结构

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

数据结构

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)额外需要的辅助空间

标签:存储,--,复杂度,嵌入式,算法,数据结构,数据,结构
From: https://blog.csdn.net/Xiaomo1536/article/details/142600008

相关文章

  • pbootcms模板导航设置外链时新窗口打开
    在PbootCMS中,如果你想在模板导航中设置外链并在新窗口中打开,可以通过条件判断来实现这一功能。具体步骤如下:实现步骤编写条件判断代码:使用 {pboot:if} 语句来判断外链是否为空。如果外链不为空,则添加 target="_blank" 属性。整合到导航链接中:将条件判断代码嵌......
  • Javascript 一题搞懂 var 变量提升 & 函数声明提升!
    前置知识:在JavaScript中,“变量提升”(Hoisting)是指在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。对于使用var关键字声明的变量,会发生变量提升现象。一、声明提升1.变量声明提升:无论var变量在代码中的何处声明,它都会被提升到其所在的函数作用域......
  • pbootcms列表如何置顶文章,istop不管用怎么办?
    在PbootCMS中,如果你希望在列表中将某篇文章置顶,可以通过调整标签参数来实现这一功能。根据你的描述,可以使用以下几种方法来实现:方法一:仅调用置顶文章如果你只想调用置顶的文章,可以使用以下标签:{pboot:lististop=1}<ahref="[list:url]"><h2>[list:title]</h2></a>{/p......
  • 如何让大模型更好地进行场景落地?【文末送书】
    自ChatGPT模型问世后,在全球范围内掀起了AI新浪潮。有很多企业和高校也随之开源了一些效果优异的大模型,例如:Qwen系列模型、MiniCPM序列模型、Yi系列模型、ChatGLM系列模型、Llama系列模型、Baichuan系列模型、Deepseek系列模型、Moss模型等。图片来自:ASurveyofLargeLa......
  • 《Learning Instance-Level Representation for Large-Scale Multi-Modal Pretraining
    系列论文研读目录文章目录系列论文研读目录摘要1.引言2.相关工作3.方法3.1.模型概述3.2.提取以实例为中心的表示法3.3.多模式预培训目标3.4.转移到下游任务4.实验预训练细节4.2.下游任务评价4.2.1零冲击产品分类4.2.2zero-shot图像-文本检索4.2.3零次产品检索4.2.4零......
  • 第三章 表格布局与表单交互
    3.1表格概述3.1.1表格的结构3.1.2表格的基本语法<table></table>表格标记<caption></caption>表格标题标记<th></th>表格表头标记<tr></tr>表格的行标记<td></td>表格的列标记<!DOCTYPEhtml><html> <head> <metachar......
  • 【基础岛·第6关】OpenCompass 评测 InternLM-1.8B 实践
    目录1.概览2.环境配置2.1创建开发机和conda环境2.2安装——面向GPU的环境安装3.数据准备3.1评测数据集3.2InternLM和ceval相关的配置文件4.启动测评4.1使用命令行配置参数法进行评测4.2使用配置文件修改参数法进行评测1.概览在OpenCompass中评估一个模型通常包括......
  • PbootCMS模版制作:当天发布的文章显示红色的方法
    在PbootCMS中,如果你想让当天发布的文章显示为红色,可以通过条件判断来实现这一功能。具体步骤如下:实现步骤获取当前日期:获取当前日期,并将其格式化为 m-d 格式。比较发布日期:比较文章的发布日期与当前日期是否相同。设置样式:如果发布日期与当前日期相同,则设......
  • 【Linux】进程控制
     ......
  • 折半搜索
    标题:正如标题所示当n=35时。爆搜的复杂度是$O(2^n)$,肯定是不能接受的,这时候就可以用折半搜索了。折半搜索的思想是:先搜一半数据的答案,在搜另一半数据的答案,最后合并这两个答案,得到最终的答案。例如此题:MaximumSubsequence可以先爆搜搜出前半段的答案,再搜出后半段的答案,得到......