title: 数据结构 | 绪论 date: 2019-12-03 12:59:51 tags: 数据结构
什么是数据结构、基本概念术语、 算法和算法分析、渐进时间复杂度 <!--more--> 主要内容
-
什么是数据结构
-
一些基本概念和术语
-
算法和算法分析
-
时间复杂度的渐进表示法
什么是数据结构
程序=数据结构+算法
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科
基本概念和术语
数据(data)
所有能输入到计算机中去的描述客观事物的符号
数据元素(data element)
数据的基本单位,也称节点(node)或记录(record)。
有时一个数据元素可以由若干数据项(Data Item)组成。
数据项(data item)
有独立含义的数据最小单位,也称域(field)
数据结构(data structure)
数据元素和数据元素关系的集合
(带结构的数据元素的集合)
四种基本数据结构
集合——数据元素间除“同属于一个集合”外,无其它关系 线性结构——一个对一个,如线性表、栈、队列 树形结构——一个对多个,如树 图状结构——多个对多个,如图
数据结构的表示
图示表示
图示表示是由顶点和边构成的图,其中顶点表示数据,边表示数据之间的结构关系;
二元组表示
数据结构的形式定义为:数据结构是一个二元组: Data-Structure=(D,S) 其中:D是数据元素的有限集,S是D上关系的有限集。
一些基本概念和术语
数据结构的三个主要问题
-
数据的逻辑结构 只抽象反映数据元素的逻辑关系
-
数据的存储(物理)结构 数据的逻辑结构在计算机存储器中的实现
-
数据的逻辑结构与存储结构密切相关 算法设计-> 逻辑结构 算法实现-> 存储结构
数据的逻辑结构
存储结构分为:
-
顺序存储结构——借助元素在存储器中的相对位置来表示数据元素间的逻辑关系
-
链式存储结构——借助指示元素存储地址的指针表示数据元素间的逻辑关系
抽象数据类型ADT
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
}ADT 抽象数据类型名
算法和算法分析
算法的概念
解决某一特定问题的具体步骤的描述,是指令的有限序列.其中每一条指令表示一个或多个操作。
算法的特性
1 有穷性
一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
2 确定性
算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。
3 可行性
一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
4 输入
一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
5 输出
一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。
算法的评价标准
1 正确性(Correctness)
算法应满足具体问题的需求。
2 可读性(Readability)
算法应该好读。以有利于阅读者对程序的理解。
3 健壮性(Robustness)
算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
4 效率与存储量需求
效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般,这两者与问题的规模有关。
算法时间复杂度
通常用程序中基本操作的执行次数来做为程序执行时间的评估值,并取问题规模作为自变量 T(n)称作算法的渐近时间复杂度。 很多算法的时间复杂度不仅与问题的规模有关,而且还与它所处理的数据集的状态有关。通常是根据数据集中可能出现的最坏情况估计出算法的最坏时间复杂度。
空间复杂度
程序所用的存储空间包括两个部分: (1)固定部分 这部分空间的大小与输入输出的个数多少、数值大小无关。 (2)可变部分 这部分空间主要包括其尺寸与实例特征有关的成分变量所占空间、引用变量所占空间、以及递归栈所用的空间,还有算法运行时动态命令使用的空间。