一、基础
二、线性表
三、栈和队列
四、串
五、树
六、图
一、基础
数据结构 是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
一、逻辑结构
-
集合
集合结构中的数据元素除了属于同一集合外,再没有其他关系。
-
线性
结构中的数据元素之前存在一对一的关系
-
树
结构中的数据元素之前存在一对多的关系
-
图
结构中的数据元素存在多对多的关系
二、存储结构(物理结构)
存储结构是指数据在计算机内的表示方法,是逻辑结构的具体实现。
包含两个方面的内容:即数据元素本身的表示与数据元素间逻辑关系的表示。
-
顺序
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据的逻辑关系和物理关系是一致的。例如编程语言的数组结构就是这样的。
-
链式
是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。很显然,这样说的话链式存储结构的数据元素存储关系并不能反映逻辑关系,因此需要用一个指针存放数据元素的地址,这样子通过地址可以找到相关数据元素的位置。
三、算法
算法是解决问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表现为一个或多个操作。
- 算法五个特性
- 有穷性:
对于任何合法的输入必须在执行有限步骤之后结束,且每步都在有限时间内完成。 - 确定性:
算法的每条指令必须有确切含义,不能有二义性。在任何条件下,只有唯一的一条执行路径,对相同的输入只能得出相同的结果。 - 可行性:
算法中的每个操作均可通过有限次执行来实现。 - 输入:
有零个或多个输入 - 输出:
有一个或多个输出
- 算法设计的要求4个
- 正确性:
算法没有语法错误;
算法对于几组输入数据能够得出满足规格要求的结果;
算法对于精心选择的经典、苛刻并带有刁难性的几组输入数据能够得出满足规格要求的结果;
对于一切合法的输入数据能够得出满足规格说明的结果; - 可读性:
算便于人们阅读、交流与调试 - 健壮性:
当输入数据非法使运行环境改变时,算法能恰当地作出反应或进行处理,不会产生莫名其妙的输出结果。 - 时空效率:
要求算法的执行时间尽可能的短,占用的空间尽可能的小
- 算法时间复杂度
一个算法的时间复杂度是指算法运行从开始到结束所需要的时间。
时间 = 所有语句的执行时间和
= (语句执行次数 X 该语句执行时间)之和
= (语句执行次数 X 单位时间)之和
= 语句执行次数和
结论: 一个算法的时间等于算法中所有语句的执行次数和。
定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度记作:T(n)=O(f(n))。它表示随问题规模n的增长,算法时间的增长率T(n)和f(n)的增长率相同,称做算法的渐进时间复杂度,简称时间复杂度。
常见的时间复杂度
- 算法空间复杂度
算法的空间复杂度通过计算算法所需的存储空间实现,算法的空间复杂度的计算公式记作:
S(n)=O(f(n)),其中n为问题的规模,f(n)为语句关于n所占存储空间的函数。
这里所说的存储空间是指对输入数据进行运算所需的辅助工作单元。