数据结构和算法(一)概念篇

正文

上学时候学过相关数据结构和算法的课程,工作中也没有很多用到的时候。很多知识点都已经还给老师了,最近又整理学习下相关的知识点。后续会持续更新记录每个知识点的具体情况,欢迎指正相互学习。

image.png

1.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常用的经典算法

  • 递推法
  • 递归法
  • 穷举法
  • 贪心算法
  • 分治法
  • 动态规划法
  • 迭代法
  • 分支界限法
  • 回溯法

总结:

以上是数据结构和算法的相关概念的基础知识笔记,后续会继续记录,相关常用数据结构的算法实现。欢迎相互习。

你可能感兴趣的:(数据结构和算法(一)概念篇)