第一周 绪论
第一讲 数据结构总览
-
数据结构课程的内容
- 各种数据的逻辑结构描述
- 各种数据的存储结构表示
- 各种数据结构的运算定义
- 设计实现运算的算法
- 分析算法的效率
-
数据结构在计算机课程体系中的地位
-
数据结构与程序设计类课程的关系
- 程序设计语言 - 基本编程
- 数据结构 - 以数据结构为中心的算法设计-基本算法设计方法
- 算法设计与分析 - 通过算法设计-算法设计方法学
第二讲 什么是数据结构
-
数据结构中的几个概念
- 数据:所有能够输入到计算机中,且能被计算机处理的符号的集合
- 数据元素:是数据(集合)中的一个“个体”,他是数据的基本单位。
- 数据项:数据线是用来描述数据元素的,他是数据的最小单位
- 数据对象:具有相同性质的若干个数据元素的集合,如整数数据对象是所有整数的集合
-
一个数据结构的构成
- 逻辑结构
- 存储结构
- 直接映射
- 所有元素占用一整块内存空间
- 逻辑上相邻的元素,物理上也相邻
- 链式存储
- 一个逻辑元素用一个节点存储,每个节点单独分配,所有节点的地址不一定是连续的
- 用指针来表示逻辑关系
- 直接映射
- 数据运算
- 运算描述
- 运算实现
数据结构求解问题的过程
-
逻辑结构类型
-
集合
元素之间关系:无特点:数据元素之间处理“属于同一个集合”的关系外,别无其他逻辑关系。是最松散的,不受任何制约的关系
-
线性结构
元素之间关系:一对一
特点:开始元素和终端元素都是唯一的,除此之外,其他元素都有且仅有一个前趋元素和一个后继元素 -
树形结构
元素之间关系:一对多
特点:开始元素唯一,终端元素不唯一。除终端元素外,每个元素有一个或多个后续元素;除开始元素外,每个元素有且仅有一个前趋元素 -
图形结构
元素之间关系:多对多特点:所有元素都可能有多个前趋元素和多个后继元素
-
-
存储结构类型
- 顺序存储结构
- 链式存储结构
- 索引存储结构
- 哈希(散列)存储结构
-
数据类型和抽象数据类型
- 数据类型:是一个值的集合和定义在此集合上的一组操作的总称
- 抽象数据类型:指从求解问题的数学模型中抽象出来的数据逻辑结构和运算(抽象运算),二不考虑计算机的具体实现
第四讲 算法及其描述
-
算法:数据元素之间的关系有逻辑关系和物理关系,对应的运算有基于逻辑结构的运算描述和基于存储结构的运算实现。基于存储结构的运算实现的步骤或过程称为算法
-
算法的5个重要的特性
- 有穷性:在有穷步之后结束,算法能够停机
- 确定性:无二义性
- 可行性:可通过基本运算有限次执行来实现,也就是算法中每一个动作都能够被机械的运行
- 可输入
- 有输出
-
算法描述
第五讲 算法分析基础
-
分析算法占用的资源
- CPU时间 - 时间性能分析
- 内存空间 - 空间性能分析
-
算法分析目的:分析算法的时空效率以便改进算法
-
算法的时间复杂度分析
- 一个算法是由控制结构(顺序、分支和循环三种)和元操作(指固有数据类型的操作,如+、-、*、/、++、–等)构成的。算法执行时间取决于两者的综合效果。
-
算法分析方式:
- 事后分析统计方法:编写算法对应程序,统计其执行时间
- 事前估算分析方法:认为算法执行时间是问题规模n的函数
-
分析算法的执行时间
-
“O”
-
一个没有循环的算法的执行时间与问题规模n无关,记作O(1),也称为常数阶
-
一个只有一重循环的算法的执行时间与问题规模n的增长呈先行增大关系,记作O(n),也称线性阶。
-
简化的时间复杂度分析
- 算法的基本操作一般是最深层循环内的原操作。
- 算法执行时间大致 = 基本操作所需的时间 X 运算次数
-
空间复杂度分析
- 空间复杂度:用于度量一个算法在运行过程中临时占用的存储空间大小。
- 若一个算法的空间复杂度为O(1),则称此算法为原地工作算法或就地工作算法。
第六讲 其他情况的算法分析
-
最好、最坏和平均时间复杂度分析
-
变长时空分析与定长时空分析
-
递归算法的时间复杂度分析