什么是数据结构
概括的说,数据结构是一门讨论“描述现实世界实体的的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现的”学科
基本概念和术语
数据:是对信息的一种符号表示。在计算机科学中指所有能输入到计算机中被计算机程序处理的符号的总称
数据元素:是数据的基本单位。在程序中通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项组成。
数据结构:有一个特性相同的数据元素的集合,如果在数据元素之间存在一种或多种特定的关系,则成为一个数据结构。
数据结构是相互之间存在某种逻辑关系的数据元素的集合。
从关系或结构分,数据结构分为四类:
数据结构的形式化描述:
数据结构包括“逻辑结构”和“物理结构”两个方面的:
逻辑结构是对数据元素之间的逻辑关系描述,他可以用一个数据元素的集合和定义在此集合上上的若干关系表示
物理结构(存储结构):是数据结构在计算机中的表示和实现
数据的存储结构
数据元素的映像方法:
用二进制的位串表示数据元数。
关系的映像方法:
顺序映像
非顺序映像:
数据类型:
是指一种程序设计语言中,变量所具有的数据种类
如在C语言中数据类型:
基本类型:整形,浮点型和字符型,指针,枚举型
构造类型:数组,结构,联合
数据对象
某种数据类型元素的集合,可以是有限的也可以是无限的
抽象数据类型
一个数学模型以及定义在该模型上的一组操作.
抽象数据类型实际上就是对该数据结构的定义。因为它定义了一个数据的逻辑结构以及此结构上的一组算法。
用三元组描述如下:(D,S,P)
关于逻辑机构注意事项:
- 逻辑结构与数据元素本身的形式和内容无关。
- 逻辑结构与数据元素的相对位置无关
- 逻辑结构与所含元素的个数无关
- 逻辑结构与数据的存储无关,他是独立于计算机的
数据的逻辑结构和存储结构
是密切相关的两个方面。一般的一种数据的逻辑结构根据需要可用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。
算法和算法分析
算法:是对特定问题求解步骤的一种描述。算法是指令的有限序列,其中每一条指令表示一个或多个操作。
特性:有穷性,确定性吗,可行性,输入,输出
算法和数据结构
解决某一种特定类型问题的算法可以选定不同的数据结构,而且选择恰当与否直接影响算法的效率。反之,一种数据结构的优劣由各种算法的执行来体现。
算法设计要求
正确性
可读性
健壮性
效率和存储量要求:效率指算法的执行时间,存储量需求指算法执行过程中所需要的最大存储空间
算法效率的衡量
事后统计法:
缺点:1.必须执行程序2.其他因素掩盖算法本质
事前分析估算法
和算法执行时间相关的因素:
- 算法选用的策略
- 问题的规模
- 编写程序的语言
- 编译程序产生的机器代码质量
- 计算机执行指令的速度
- 一个特定算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,他是问题规模的函数
估算算法的复杂度:
从算法中选取一种对于所研究的问题来说是基本操作的原操作,
以该基本操作在算法中重复执行的次数作为算法运行时间的衡量准则
频度:指该语句重复执行的次数。
算法的存储空间需求
算法的空间复杂度定义为:
S(n)=O(g(n))
表示随着问题规模n的增大,算法运行所需存储量的增长率与g(n)的增长率相同。
算法的存储量包括:
- 输入数据所占空间;
- 程序本身所占的空间
- 辅助变量所占的空间。
本章知识结构图
例题: