正文
上学时候学过相关数据结构和算法的课程,工作中也没有很多用到的时候。很多知识点都已经还给老师了,最近又整理学习下相关的知识点。后续会持续更新记录每个知识点的具体情况,欢迎指正相互学习。
image.png1.1相关术语
数据
数据(Data)是能被计算机处理的符号或符号集合,含义广泛,可理解为“原材料”。
如字符、图片、音视频等
数据元素
数据元素(data element)是数据的基本单位。例如一张学生统计表。
数据项
数据项(data item)组成数据元素的最小单位。例如一张学生统计表,有编号、姓名、性别、籍贯等数据项
可以理解为数据库表中的字段值
数据对象
数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集。例如正整数N={1,2,3,····}。
数据结构:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.
它主要是研究数据的逻辑结构和物理结构之间的相互关系。
1.2 逻辑结构
逻辑结构(logical structure)是指在数据中数据元素之间的相互关系。数据元素之间存在不同的逻辑关系构成了以下4种结构类型。
(1)集合结构:集合的数据元素没有其他关系,仅仅是因为他们挤在一个被称作“集合”的盒子里。
(2)线性结构:线性的数据元素结构关系是一对一的,并且是一种先后的次序,就像a-b-c-d-e-f-g·····被一根线穿连起来。
(3)树形结构:树形的数据元素结构关系是一对多的,这就像公司的部门级别,董事长-CEO\CTO-技术部\人事部\市场部.....。
(4)图结构:图的数据元素结构关系是多对多的。就是我们常见的各大城市的铁路图,一个城市有很多线路连接不同城市。
1.3物理结构(存储结构)
存储结构(storage structure)也称为物理结构(physical structure),指的是数据的逻辑结构在计算机中的存储形式。数据的存储结构一般可以反映数据元素之间的逻辑关系。分为顺序存储结构和链式存储结构。
(1)顺序存储结构:是把数据元素存放在一组存储地址连续的存储单元里,其数据元素间的逻辑关系和物理关系是一致的。
常用的实现方式如:顺序表,数组
(2)链式存储结果:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
数据元素的存储关系并不能反映其逻辑关系,因此需要借助指针来表示数据元素之间的逻辑关系。
1.4算法
算法可以理解为解决问题的方法。有一种说法是 程序=数据结构+算法。算法的操作对象是数据结构。数据结构关注的是数据的逻辑结构和存储结构,而算法则是在数据结构的基础上来解决问题。
算法是编程思想,数据结构是思想的基础。
算法的5大特性
1.有穷性,是指算法在执行有限的步骤之后,自动结束而不是出现无限循环,并且每一个步骤在可接受的时间内完成。
2.确定性,是指算法执行的每一步骤在一定条件下只有一条执行路径,也就是相同输入只能有一个唯一的输出结果。
3.可行性,是指算法每一步骤都必须可行,能够通过有限的执行次数完成。
4.输入,是指算法具有零个或多个输入。
5.输出,是指算法至少有一个或多个输出。
1.5算法的优劣
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从[时间复杂度]和[空间复杂度]来考虑
1.5.1时间复杂度
image.png时间复杂度的优劣顺序:
image.png
1.5.2空间复杂度
算法运行需要消耗的内存空间
1.6常用的经典算法
- 递推法
- 递归法
- 穷举法
- 贪心算法
- 分治法
- 动态规划法
- 迭代法
- 分支界限法
- 回溯法
总结:
以上是数据结构和算法的相关概念的基础知识笔记,后续会继续记录,相关常用数据结构的算法实现。欢迎相互习。
网友评论