从零开始学习数据结构
目录
前言
本章主要针对数据结构中一些基本概念和术语进行解释
正文
1、基本概念和术语
(1)数据(data)
是描述客观事物的数值、字符、以及能输入计算机且能被处理的各种符号集合。
(2)数据项(data item)
是构成数据元素的不可分割的最小单位
(3)数据元素(data element)
是组成数据的的基本单位,也称为节点(node)或记录(record)。
一个数据元素可由若干个数据项组成,例如,一位学生的信息记录为一个数据元素,它是由学号、姓名、性别等数据项组成。
(4)数据对象(Data Object)
是性质相同的数据元素的集合,是数据的一个子集,如:一个班的学生就是一个数据对象
(5)数据结构(Data structure)
(1)、数据结构是相互之间存在的一种或多种特定的关系的数据元素的集合
(2)、数据结构的三要素:逻辑结构、物理结构(存储结构)、数据的运算
需要注意:数据的逻辑结构独立于其存储结构
(3)、数据结构的形式定义为一个二元组:Data Structure=(D,S)
其中:D是数据元素的有限级,S是D上关系的有限级
2、数据的三要素
(1)、数据的逻辑结构
逻辑结构是指数据元素之间的逻辑关系描述,由数据元素的集合和在此集合上的关系组成。数据的逻辑结构分为线性结构和非线性结构,线性表是典型的线性结构;集合、树和图是典型的非线性结构。数据的逻辑结构分类如图:
也有的教材中分为四种结构:
1、集合结构:结构中的数据元素之间除了“同属一个集合”外,别无其他关系。a图
2、线性结构:结构中的数据元素之间只存在一对一的关系。b图
3、树形结构:结构中的数据元素之间存在一对多的关系。c图
4、图状结构或网状结构:结构中的数据元素之间存在多对多的关系。 d图
(2)、数据的存储结构
存储结构(又称物理结构)是逻辑结构在计算机中的存储映像。它包括数据元素映像和关系映像。数据的存储结构主要有顺序存储、非顺序存储(包括链式存储、索引存储和散列存储)。
1)、顺序存储
把逻辑上相邻的元素存储在物理位置上也相邻的存储单位中,元素之间的关系由存储单元的邻接关系来体现。其优点是可以实现随机存取,每个元素占用最少的存储空间;缺点是只能使用相邻的一整块存储单元,因此可能产生比较多的外部碎片
2)、链式存储
不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。其优点是不会出现碎片现象,能充分利用所有的存储单元;缺点是每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。
3)、索引存储
在存储元素信息的同时,还建立附加的索引表。索引表中的每项成为索引项,索引项的一般形式是(关键字,地址)。其优点是检索速度快;缺点是附加的索引表额外占用存储空间,另外,增加和删除时也需要修改索引表,因而会花费较多的时间。
4)、散列存储
根据元素的关键字直接计算出该元素的存储地址,又称哈希存储。其优点是检索、增加和删除节点的操作都很快;缺点是若散点函数不好,则可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销
(3)、数据的运算
数据的运算指的是对数据进行操作、处理和转换的过程。数据的运算包括各种基本操作,如数学运算、逻辑运算(包括与、或、非等逻辑运算)、比较操作等,以及对数据进行的各种处理和转换操作。
3、算法
1、算法的五个特点
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作,此外,一个算法还具有下列几个重要的特性:
1. 有穷性(Finiteness):算法必须在有限的步骤内结束,不能无限循环下去。一个算法必须在执行有限次操作后终止。
2. 确定性(Definiteness):算法中的每一步骤必须具有明确的含义,不会存在歧义。对于相同的输入,算法应当产生相同的输出。
3. 输入(Input):算法必须有零个或多个输入,用来传递数据给算法进行处理。输入是算法开始执行的初始条件。
4. 输出(Output):算法必须至少有一个或多个输出,用来表示算法的结果或解决方案。输出是算法结束时产生的结果。
5. 可行性(Feasibility):算法中描述的操作必须是可以通过已经实现的基本运算执行来完成的。即算法描述的操作都是可以实际执行的。
2、算法的目标
算法的目标是解决特定问题或执行特定任务。具体来说,算法的目标包括以下几个方面:
1. 正确性(Correctness):算法能正确地求解问题。
2. 高效率与低存储量(Efficiency):效率是指执行的时间,存储量是指算法执行过程中所需的最大存储空间
3. 可读性(Readability):算法能具有良好的可读性,帮助人们理解
4. 健壮性(Robustness):输入非法数据时,算法能适当地做出反应或者将进行处理,而不会产生莫名其妙的输出结果。
4、算法的复杂度
算法的复杂度是算法效率的度量,是评价算法优劣的重要数据。一个算法的复杂度的高低,体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,就说该算法的复杂度越高。
算法的复杂度是算法运行所需要的计算机资源的量,其中需要的时间资源的量称作时间复杂度,需要的空间(即存储器,包括内存和外存)资源的量称作空间复杂度。
总结
体验到了文科生的感觉
欢迎指正。