1.1数据结构的研究内容
- 数据结构主要研究非数值计算问题,研究如何合理的组织数据、高效地处理数据。
- 非数值计算问题:无法用数学方程建立数学模型。
- 程序 = 算法 + 数据结构
- 数据结构是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。
1.2基本概念与术语
1.2.1 数据----数据元素----数据项----数据对象
- 数据:客观事物的总称。所有能输入计算机并能被计算机程序处理的符号的总称。
- 数据元素:数据的基本单位(不是最小),通常看作一个整体。
- 数据项:组成数据元素的不可分割、具有独立含义的最小单位。
- 数据对象:性质相同的数据元素的集合。
(从某种意义上讲,数据、数据对象是集合,数据元素是集合元素)
1.2.2数据结构
- 数据结构:是具有一种或多种特定关系的数据元素的集合。
- 逻辑结构:由逻辑关系确定数据关系,与数据的存储无关,独立于计算机。
- 线性:线性表、栈、队列、串、数组、广义表。
- 非线性:树、图、集合结构。
- 存储结构
- 顺序
- 链式
1.3数据类型与抽象数据类型
- 数据类型:值集+定义在值集上的操作。
- 抽象数据类型:解决问题的数学模型+操作。
- 抽象数据类型仅是一个模型的定义,并不涉及模型的具体实现,因此描述中涉及的参数不必考虑具体数据类型。
1.4算法与算法分析
1.4.1算法的定义及特性
- 定义:为了解决某类问题而规定的有限长的操作序列。
- 特性:有穷性、可行性、确定性、输入(>=0)、输出(>=1)。
1.4.2算法的优劣判断
- 正确性、可读性、健壮性、高效性。
1.4.3算法的时间复杂度
- 问题规模:算法求解问题输入量的多少。
- 语句频度:一条语句重复执行的次数。
- 渐进时间复杂度--增长率--最好、最坏时间复杂度、平均时间复杂度。
1.4.4算法的空间复杂度
- 本身占有的空间--辅助空间。
- 原地工作:辅助空间所需相对于输入量是个常数,则该算法称为原地工作。