嵌入式开发学习---(部分)数据结构(无代码)

数据结构

为什么学习数据结构?

1)c语言告诉如何写程序,数据结构是如何简洁高效的写程序

2)遇到一个实际问题,需要写程序去实现相应功能,需要解决那两个方面的问题?
如何表达数据之间的逻辑规律以及如何将数据存放到计算机中

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

数据:不只是一个单纯的数值,而是类似于一个集合的概念

结构:数据之间的关系
采用什么方法解决问题

算法
数据结构加算法就是程序

数据结构是什么

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

数据

数据:不只是一个单纯的数值,而是类似于一个集合的概念

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

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

节点:数据元素

逻辑结构

数据之间的逻辑规律和数据之间的关系

数据之间的关系

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

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

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

存储结构

数据的逻辑结构在计算机中的具体实现

1)顺序存储结构

数组:在内存当中一段连续的内存空间中保存数据(如c语言中的一维数组)
2)链式存储结构

特点 :数据在内存中是不连续的,通过指针进行连接

链表:

c 复制代码
struct    node_t
{
	int  date;//数据域
	struct   node_t  * next;//指针域,指向自身结构体类型
};

3)索引存储结构

提高查找速度

索引表 + 数据文件

4)散列存储结构

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

存的时候按照对应关系存

取的时候按照对应关系取

操作(运算)

增删改查

算法

解决问题的思想方法

程序

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

算法与数据结构

  • 算法 + 数据结构 = 程序
    算法的设计 :取决于选定的逻辑结构
    算法的实现:依赖于采用的存储结构(顺序、链式)

算法的特性

复制代码
1)有穷性:算法的执行步骤是有限的
2)确定性:算法的每一步都是有明确含义的
3)可行性:算法能够在有限的时间内完成
4)输入
5)输出

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

复制代码
正确性:保证算法可以正确完成功能
易读性:容易被解读
健壮性:容错处理
高效性:执行效率,算法执行快慢容易受到计算机性能的影响,不可以作为评判算法高效性的标准,这通过可执行语句重复执行次数来衡量算法是否高效 。(时间复杂度)
低存储性:占用空间小(空间复杂度)

时间复杂度

复制代码
算法的可执行语句重复执行的次数
c 复制代码
通常时间复杂度用一个问题规模函数来表达	
T(n) = O(f(n))
T(n)	//问题规模的时间函数
n		问题规模   
O		//时间数量级
f(n)	//算法的可执行语句重复执行的次数  用问题规模n的某个函数f(n)来表达

计算大O的方法

c 复制代码
1)根据问题规模n写出表达式f(n)
2)只保留最高项,其他项舍去
3)如果最高想系数不为1,除以最高项系数
4)如果有常数项,将其置为1  // f(n)=8; O(1)

空间复杂度

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

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

c 复制代码
1)输入输出数据所占空间
2)算法本身所占空间
3)额外需要的辅助空间
相关推荐
码农的小菜园2 小时前
gradle常用指令使用笔记
笔记
林姜泽樾2 小时前
Linux入门第十二章,创建用户、用户组、主组附加组等相关知识详解
linux·运维·服务器·centos
zyq99101_12 小时前
优化二分查找:前缀和降复杂度
数据结构·python·蓝桥杯
qyzm2 小时前
天梯赛练习(3月13日)
开发语言·数据结构·python·算法·贪心算法
逆境不可逃3 小时前
LeetCode 热题 100 之 64. 最小路径和 5. 最长回文子串 1143. 最长公共子序列 72. 编辑距离
算法·leetcode·动态规划
xiaokangzhe3 小时前
Linux系统安全
linux·运维·系统安全
feng一样的男子3 小时前
NFS 扩展属性 (xattr) 提示操作不支持解决方案
linux·go
鸟电波3 小时前
硬件笔记——示波器篇
笔记
Don.TIk3 小时前
SpringCloud学习笔记
笔记·学习·spring cloud
CoderCodingNo3 小时前
【GESP】C++五级练习题 luogu-P1182 数列分段 Section II
开发语言·c++·算法