一·前言
以下博主自己在准备408考试的过程知识的总结以及部分思考和拓展,希望可以对正在学习或者复习数据结构的你有帮助
参考书籍:数据结构——从概念到c实现 王红梅 皮德常 编著
1.数据结构的基本概念
数据是所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。数据元素具有广泛的含义,一般来说,能独立,完整地描述问题时间的一切实体都是数据元素
数据项是构成数据元素的最小单位,而且数据元素通常具有相同个数和类型的数据项。
数据结构是指相互之间存在一定关系的数据元素的集合。
数据的逻辑结构是指数据元素以及数据元素之间的逻辑关系,是从实际问题抽象出的数据模型,在形式上可定义为一个二元组:Data_Structure=(D,R)
其中,D是数据元素的有限集合,R是D上关系的集合。
根据数据元素之间逻辑关系的不同可以分为4类:
(1)集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系。
(2)表结构:数据元素之间存在着一对一的线性关系。
(3)树结构:数据元素之间存在着一对多的层次关系。
(4)图结构:数据元素之间存在着多对多的任意关系。
树结构和图结构也称为非线性结构。
数据的存储结构又称物理结构,是数据及其逻辑结构在计算机中的表示(也称为映像)。通常有两种存储结构:顺序存储结构和链接存储结构。
顺序存储结构的基本思想是用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置表示。
链接存储结构的基本思想是:用一组任意的存储单元存储元素,数据元素之间的逻辑关系用指针来表示。
抽象数据类型 是一个数据模型以及定义在该模型上的一组操作的总称。
2.算法的基本概念
算法:是对特定问题求解步骤的一种描述,是指令的有限序列。
(1)算法的基本特性:
1.有穷性:一个算法总是(对任何合法输入)在执行有穷步之后结束,且每一步都在有穷时间内完成。
2.确定性:算法中的每一条指令必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出。
3.可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
(2)好的算法的特征
1.正确性:算法可以满足具体问题的需求,即对于任何合法的输入,算法都会得出正确的结果。
2.健壮性:算法对非法输入的抵抗能力,即对于错误的输入,算法应能识别并作出处理,而不是产生错误动作或陷入瘫痪。
3.可理解性:算法容易理解和实现。
4.抽象分级:算法一旦创建,必须由人来阅读,理解,使用和修改。
5.高效性:算法的效率包括时间效率和空间效率,时间效率显示了算法运行得有多快;而空间效率则显示了算法需要多少额外的存储空间。
(3)算法分析
时间复杂度:只考察当问题规模充分大时,算法中基本语句的执行次数在渐进意义下的阶,称作算法的渐进时间复杂度,简称时间复杂度,通常用大O记号表示。
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
注:常对幂指复杂度依次增加
空间复杂度:输入/输出数据占用的空间;算法本身占用的空间;执行算法需要的辅助空间。