一、基本概念和术语
- 数据、数据元素、数据对象、数据类型、抽象数据类型、数据结构。
1.1 数据
- 数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入计算机中并被计算机程序识别和处理的符号的集合。
1.2 数据元素
- 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。
- 一个数据元素可由若干个数据项组成,数据项数数据元素的不可分割的最小单位。
- 例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
1.3 数据对象
- 数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
- 例如,整数数据对象集合N。
1.4 数据类型
- 数据类型是一个值的集合和定义在此集合上一组操作的总称。
- 原子类型:其值不可再分的数据类型。
- 结构类型:其值可以再分的数据类型。
- 抽象数据类型:抽象数据组织和与之相关的操作。
1.5 抽象数据类型
- 抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。
- 抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。
- 即无论其内部结构如何变化,只要它的数学类型不变,都不影响其外部的使用。
- 通常用(数据对象、数据关系、基本操作集)这样的三元组来表示抽象数据类型。
1.6 数据结构
- 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
- 数据结构包括三方面的内容:逻辑结构、数据存储和数据的运算。
- 数据的逻辑结构和存储结构是密不可分的两个方面。
- 一个算法的设计取决于所选定的逻辑结构,二算法的实现依赖于所选用的存储卡结构。
二、数据的三要素
- 数据的逻辑结构、数据的存储结构、数据的运算。
2.1 数据的逻辑结构
- 逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。
- 与数据的存储无关,独立于计算机。
- 数据的逻辑结构分为线性结构和非线性结构。
- 线性结构:线性表。
- 非线性结构:集合、树、图。
2.2 数据的存储结构
- 存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。
- 数据的存储结构主要有:顺序存储、链式存储、索引存储、散列存储。
2.3 数据的运算
- 施加在数据上的运算包括运算的定义和实现。
- 运算的定义是针对逻辑结构的,指出运算的功能。
- 运算的实现是针对存储结构的,指出运算的具体操作步骤。
三、算法
- 算法是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
3.1 算法的重要特征
- 重要特征:有穷性、确定性、可行性、输入、输出。
- 好算法的要求:正确性、可读性、健壮性、效率与低存储量要求。
3.2 算法效率的度量
- 算法效率的度量是通过时间复杂度与空间复杂度来描述的。
3.2.1 时间复杂度
- 算法中所有语句的频度之和记作 T(n) ,是该算法问题规模 n 的函数。
- 时间复杂度主要分析 T(n) 的数量级。
- 最坏时间复杂度、平均时间复杂度、最好时间复杂度。
3.2.2 空间复杂度
- 算法的空间复杂度 S(n) ,定义为该算法所耗费的存储空间,是规模为 n 的函数。
- 算法原地工作是指算法所需辅助空间是常量,即 O(1) 。
易错点
- 循环队列是用顺序表表示的队列,是一种数据结构。
- 栈是一种抽象数据结构,可采用顺序存储或链式存储,只表示逻辑结构。
- 顺序表、哈希表和单链表表示几种数据结构,即描述逻辑结构,也描述存储结构和数据运算。
- 有序表是指关键字有序的线性表,可以链式存储也可以顺序存储,仅描述元素之间的逻辑关系,故属于逻辑结构。
- 在存储数据时,不仅要存储数据元素的值,还要存储数据元素之间的关系。