绪论
基本概念和术语:
数据:描述客观事物的数字、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。
数据元素:数据的基本单位,在计算机程序中,通常作为一个整体进行考虑和处理。
数据项:数据的不可分割的最小单位
数据对象:性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
另一种定义:按照逻辑关系组织起来的一批数据,按一定的存储方法把它存储在计算机中,并在这些数据上定义了一个运算的集合。
数据结构:
逻辑结构+存储结构+操作
逻辑结构:
- 集合结构
- 线性:线性表、栈、队列、串
- 树型
- 图型
存储结构:顺序存储(连续)、链式存储(不必连续)、索引、散列
算法
定义:指一系列确定的而且是在有限步骤内能完成的操作。
算法特点:
- 可行性
- 确定性
- 有穷性
- 0个或0个以上的输入
- 至少一个以上的输出
算法设计的要求:
- 正确性
- 可读性
- 健壮性/容错性
- 效率与低存储量需求
算法的评价:
- 时间复杂度 大O法
- 空间复杂度 本身+额外辅助+输入
时间复杂度:
定义:一般情况下,算法中基本操作重复执行的时间是问题规模n的某个函数f(n),
算法的时间量度记作:T(n)=O(f(n))
语句的频度:该语句重复执行的次数。
存在关系:对数函数<幂函数<指数函数
空间复杂度:
- 存储算法本身所占用的空间
- 算法的输入/输出数据占用的空间
- 算法在运行过程中临时占用的辅助空间
算法和数据结构的关系:
数据计算机科学家沃斯提出:“算法+数据结构=程序”
抽象数据类型(ADT)
定义:是指基于一个逻辑类型的数据模型以及定义在该模型上的一组操作,每一个操作由它的输入和输出定义。
抽象数据类型的描述包括:给出抽象数据类型的名称、数据的集合、数据之间的关系和操作的集合等方面的描述。
抽象数据类型的设计者根据这些描述给出操作的具体实现,抽象数据类型的使用者依据这些描述使用抽象数据类型。