21 总结

  • 格式:pdf
  • 大小:1.06 MB
  • 文档页数:26

张乃孝精讲:“数据结构” 总结
16
算法
算法是由有穷规则构成(为解决某一类问 题)的运算序列。
算法设计的方法
贪心法 分治法 回溯法 动态规划法 *分枝界限法
张乃孝精讲:“数据结构” 总结 17
不同方法的应用


对于某一问题来说,能用不同的设计技巧得 到不同的算法,0/1背包问题就是典型的 例子。 一个算法中,也可以结合使用几种算法设计 技巧。如快速排序算法是分治的技巧和回溯 的技巧的结合,其中分治的技巧是主要的。
张乃孝精讲:“数据结构” 总结
18
检索/查找算法
集合和字典的查找
顺序表示 链接表示 散列表示 索引表示
线性表的查找: 序查找/二分法查找 字符串查找:模式匹配 二叉树的周游 广度优先周游 深度优先周游 后根次序 对称次序 先根次序
树的周游 广度优先周游 深度优先周游 后根次序 先根次序 顺 树林的周游 后根次序 先根次序 图的周游 广度优先周游 深度优先周游
循环语句的时间代价一般用以下三条原则分析:



(1) 对于一个循环,循环次数乘以每次执行简单语句的数目即为其时 间代价。 (2) 对于多个并列循环,可先计算每个循环的时间代价,然后按大O 表示法的加法规则计算总代价。 (3) 对于多层嵌套循环,一般可按大O 表示法的乘法规则计算。但如 果嵌套是有条件的,为精确计算其时间代价,要仔细累加循环中简单语 句的实际执行数目,以确定其时间代价。
张乃孝精讲:“数据结构” 总结 11
数据结构的分类(Ⅰ)

按逻辑结构分类


给定 B=<K,R>, 若<k1,k2> R, 则称k1为k2的前 驱, k2为k1的后继.没有前驱的结点为开始结点, 没 有后继的结点为终端结点 根据R的特点可以将数据结构分为以下三类:
线性结构: K中每个结点最多只有一个前驱和一个后继 树形结构: K中每个结点最多只有一个前驱,但可有多个后 继 复杂结构:K中结点的前驱、后继结点的个数都不作限制 特别地 集合结构:当R为空集时,K中结点间没有约束关系。
21.
字典的树形表示 最佳和平衡二叉排序树 索引文件 插入排序 选择排序和交换排序 分配排序与归并排序 图 最小生成树 最短路径 拓扑排序和关键路径 总结:主要内容和方法
26ቤተ መጻሕፍቲ ባይዱ
张乃孝精讲:“数据结构” 总结

张乃孝精讲:“数据结构” 总结
3
学习目的

理解数据结构和算法的概念; 掌握设计数据结构与算法的主要原理和方法; 比较不同数据结构和算法的特点。 提高学生使用计算机解决问题的能力。
张乃孝精讲:“数据结构” 总结
4
问题求解
着色问题,信号灯问题 Josephus问题 迷宫问题 农夫过河问题 Huffman编码 拓扑排序 关键路径 表达式计算 *骑士周游 *多边形的最优分割 *求组合数 *背包问题,0/1背包问题
张乃孝精讲:“数据结构” 总结 7
抽象数据类型

有一定行为(操作)的抽象(数学)类型。 抽象出数据类型的使用要求,而把它的具体表示方 式和运算的实现细节都隐藏起来。


允许独立地考虑数据类型的外部接口和内部的实现。 支持数据类型的实现与使用分离的原则。是一种十 分有效的对问题进行抽象与分解的思维工具。 是面向对象技术与方法的主要理论基础。也有助于 数据结构的学习和研究。
25


张乃孝精讲:“数据结构” 总结
2009年《数据结构》教学进度表
绪论 2. 线性表 3. 字符串 4. 栈 5. 队列 6. 二叉树 7. 二叉树的应用 8. 树与树林 9. 集合与字典 10. 字典的散列表示
1. 11. 12. 13.
14.
15. 16. 17. 18. 19. 20.
张乃孝精讲:“数据结构” 总结 8

抽象数据类型
Set (集合) Dictionary (字典) List (线性表) String (字符串) Stack (栈) Queue (队列) BinTree (二叉树) Tree (树) PriorityQueue (优先队列) Graph (图)
张乃孝精讲:“数据结构” 总结
具体选择何种存储结构,主要应该考虑操作的要求
使得主要运算的开销,在时间和空间的权衡中达到最佳效果 算法的时间代价是选择与评价不同存储结构的关键
张乃孝精讲:“数据结构” 总结 24
复习要求


讲课内容与教材内容的交集为主 书面作业/上机实习/网上讨论为辅
*教材第10章和2.5/2.6/4.3.3的内容不要求 *算法7.5/7.6/8.3/8.9/9.8/9.9思路要清晰 期末考试包括全部内容,题型与期中相似.
张乃孝精讲:“数据结构” 总结 5
用计算机求解问题
张乃孝精讲:“数据结构” 总结
6
“算法+数据结构=程序”


程序就是在数据的某些特定的结构和表示的 基础上对于算法的描述。 算法与数据结构是程序设计中相辅相成、不 可分割的两个方面。
与《图论》及《算法的分析和设计》课程的 区别。 《数据结构》需要特别强调的原因。
对于递归算法,一般可把时间代价表示为一个递归方程的解。
张乃孝精讲:“数据结构” 总结
23
ADT,数据结构与算法相互关系
一个抽象数据类型决定了一组需要的操作
不同抽象数据类型的实现,可以选择相同的逻辑结构 对于一种逻辑结构,往往可以采用不同的存储结构 一个算法的思想可以独立于具体的数据表示,但是操作的 实现,总是依赖于具体的存储结构
张乃孝精讲:“数据结构” 总结
21
算法空间代价分析
静态分析和动态分析 在静态空间分析中,值得注意的是数组(算法 中静态明确定义大小的数组),它占用了大 部分静态空间。 动态空间的分配主要由两种情况构成: (1)函数的递归调用; (2)执行动态分配函数。
张乃孝精讲:“数据结构” 总结
22
算法的时间代价分析
2009年秋季北京大学主干基础课
《数据结构》
第二十一讲 总结:主要内容和方法
主讲:张乃孝 教授 对象:2008级元培班和数学学院本科
张乃孝精讲:“数据结构” 总结 1
2009年秋季 北京大学主干基础课
《数据结构》
主讲:张乃孝 教授 对象:2008级元培班和数学学院本科
张乃孝精讲:“数据结构” 总结
张乃孝精讲:“数据结构” 总结
19
排序
插入排序 Shell排序 表插入排序 二分法插入排序 直接插入排序 选择排序 堆排序 直接选择排序 交换排序 快速排序 起泡排序 分配排序 基数排序 归并排序 二路归并 多路归并
张乃孝精讲:“数据结构” 总结
20
算法分析


空间代价(空间复杂性):被解决问题的规模(以某种单位 计)为n时, 某求解算法所需存储空间按某种单位为S(n), 则称该算法的空间代价为S(n). 时间代价(时间复杂性):当问题规模(以某种单位计)为n 时, 算法所耗时间按某种单位为T(n), 则称该算法的时 间代价为T(n).
张乃孝精讲:“数据结构” 总结 13
数据结构的分类(Ⅲ)
按操作(行为)分类(由抽象数据类型决定)
队列 栈 优先队列 字符串
张乃孝精讲:“数据结构” 总结
14
内部数据结构

集合 单链表表示 位向量表示 字典 散列表示 顺序表示 二叉排序树(二叉搜索树) 平衡二叉排序树 最佳二叉排序树 线性表 链表 顺序表 字符串 链接表示 顺序表示



逻辑结构(数学模型) 指数学模型(集合,表,树和图等)中的基本 元素(结点)之间的相互关系(在抽象数据 类型中这些关系隐含在数学名称中)。 描述方式:B=<K,R>, K是结点的有穷集合, R是K上的一个关系。 存储结构(物理结构) 指数学模型的具体表示方式,包括结点的表 示和关系的表示。 数据的逻辑结构在计算机存储器中的映射(或 表示) 操作(行为) 指抽象数据类型关心的各种行为在不同的存 储结构上的具体实现(算法或程序)

栈 链接栈 顺序栈 队列 链接队列 顺序队列 二叉树 链接表示 顺序表示 线索二叉树 树 父指针表示 长子-兄弟表示 子表表示 图 邻接表表示 邻接矩阵表示
15




张乃孝精讲:“数据结构” 总结
外部数据结构
顺序文件 倒排文件 散列文件 索引文件/索引顺序文件 B树 B+树 多分树
9
数据结构

传统的概念:数据结构是计算机中表示(存储) 的、具有一定逻辑关系和行为特征的一组数据

面向对象的观点:数据结构是抽象数据类 型的物理实现。
主要解决两个问题: 如何具体表示抽象数据类型中的数学模型; 如何给出抽象数据类型中需要操作的实现。
张乃孝精讲:“数据结构” 总结
10
数据结构的三个方面
2
教材与参考资料
普通高等教育“十一五”国家级规划教材 普通高等教育精品教材 《算法与数据结构— C语言描述》(第2版) 张乃孝 编著, 高等教育出版社 2008.

普通高等教育“十一五”国家级规划教材配套参考书 《算法与数据结构》(第2版)学习指导与习题解析 张乃孝 编著, 高等教育出版社 2009.

张乃孝精讲:“数据结构” 总结
12
数据结构的分类(Ⅱ)

按存储结构分类



计算机的内存提供了一个可以连续存储、随即存取和连 续编址的存储空间 存储结构的设计目标,就是使用比较少的空间记录逻辑 结构的必要信息,并且有效实现抽象数据类型中要求的 操作 四种最基本的存储方法 顺序表示 链接表示 散列表示 索引表示