数据结构与算法
分享
课程详情
课程评价
spContent=本课程介绍基本数据结构以及相关的经典算法,强调问题-数据-算法的抽象过程,关注数据结构与算法的时间空间效率,培养学生编写出高效程序从而解决实际问题的综合能力。本课程是北京大学信息学院平台课,也是北京大学很多理工院系的必修课程,被评为国家级精品课程和精品资源共享课程。
—— 课程团队
课程概述

计算机是现代社会中用于解决问题的重要工具,支撑这个工具高效运转的就是其后的各种系统程序、应用程序。图灵奖获得者N.Wirth写了一本经典著作程序=算法+数据结构。数据结构,是抽象的表示数据的方式;算法,则是计算的一系列有效、通用的步骤。算法与数据结构是程序设计中相辅相成的两个方面,是计算机学科的重要基石。

本课程将带领我们围绕着算法+数据结构=程序的思路,以问题求解为导向进行学习。希望能够帮助大家提高理论、抽象、设计的能力。在扎实的经典理论基础上,运用问题抽象、数据抽象、算法抽象来分析问题,应用适当的数据结构和算法来设计和实现相应的程序。通过课程学习,大家的抽象思维能力、问题求解能力将得到较大提升,编程能力和代码质量会有质的飞跃!

在求解实际问题方面,我们会学习到通过权衡时空和其他资源开销,利用数据结构来组织数据、设计高效的算法、完成高质量的程序以满足错综复杂的实际应用需要。

本课程采用张铭主编的国家十一五规划教材《数据结构与算法》(高等教育出版社)。适合计算机以及相关理工专业的本科生学习,建议先修过计算概论等课程,最好具备C++等面向对象的程序设计基础。对于具有C语言结构化程序设计基础的学生,本课程第0章补充了一些面向对象的基本内容。

课程所学到的内容会被利用到计算机科学后续的各个课程中,如操作系统、软件工程、数据库概论、编译技术、计算机图形学、人机交互等。希望可以为大家将来从事计算机相关的学习、研究和开发工作打下扎实的基础。


课程大纲

第一章 概论(两周)

1.1课程介绍

1.2问题求解

1.3数据结构与抽象数据类型

1.4算法特性及分类

1.5算法效率与度量

1.6补充  面向对象简介(选修)

1.7补充  类的特殊成员(选修)

1.8补充 模版函数与模版类(选修)

1.9补充 输入输出流(选修)

 

第二章 线性表

2.1线性结构

2.2顺序表

2.3链表

2.4顺序表和链表的比较

 

第三章 栈与队列

3.1

3.2栈与递归

3.3递归转非递归(选修)

3.4队列

3.5队列的应用

 

第四章 字符串

4.1字符串基本概念  

4.2字符串的存储结构  

4.3字符串运算的算法实现

4.4字符串的快速模式匹配(选修)

 

第五章 二叉树(两周)

5.1二叉树的概念  

5.2二叉树的抽象数据类型  

5.3二叉树的搜索    

5.4二叉树的存储结构

5.5二叉搜索树  

5.6堆与优先队列

5.7 Huffman树及其应用

 

第六章 树

6.1树的定义、树与二叉树的等价转换

6.2树的抽象数据类型及树的遍历  

6.3树的链式存储结构    

6.4树的父指针表示法(选修)

6.5树的顺序存储和K叉树  

 

第七章 图

7.1图的概念和抽象数据类型

7.2图的存储结构  

7.3图的遍历    

7.4最短路径

7.5最小生成树  

 

第八章 内排序(两周)

8.1 排序问题的基本概念

8.2插入排序 ( Shell 排序)

8.3选择排序 (堆排序)

8.4交换排序(冒泡排序、快速排序)

8.5归并排序

8.6桶排序

8.7静态基数排序(选修)

8.8链式基数排序(选修)

8.9索引排序(选修)

8.10排序算法的时间代价

 

第十章 检索

10.1检索的概念

10.2基于线性表的检索

10.3集合的检索

10.4散列表的概念和散列函数

10.5散列冲突处理

10.6散列的实现及性能分析

 

扩展:第九章(选修)

9.1 主存储器和外存储器

9.2 文件的组织和管理

9.3 外排序

 

扩展:高级线性结构(选修)

存储管理

多维数组

广义表


扩展:字典(选修) 

B树B+树

Trie 

AVL

Splay

证书要求

单元测验占分30%,编程练习占分30%,课程讨论占5%(在“课堂交流区”板块回复数量大于等于5即可获得满分),期末考试占分35%。 总分60分及以上、85分以下获得合格证书,85分及以上获得优秀证书。

参考资料

[1] 张铭,王腾蛟,赵海燕,《数据结构与算法》,高等教育出版社,2008年 6月。普通高等教育“十一五”国家级规划教材。
Textbook: Ming Zhang, Tengjiao Wang, Haiyan Zhao, "Data Structures and Algorithms", Higher Education Press, 2008.
[2] 
张铭,赵海燕,王腾蛟,《数据结构与算法实验教程》,高等教育出版社,2011年 1月。普通高等教育“十一五”国家级规划教材。
[3] 张铭、赵海燕、王腾蛟,《数据结构与算法--学习指导与习题解析》,高等教育出版社,2005年 10月。 “十五”国家级规划教材配套参考书。
[4] S. Sahni ,《数据结构算法与应用—C++语言描述》 ,汪诗林等译,机械工业出版社,2000. 
[5] M. H. Alsuwaiyel, Algorithms Design Techniques and Analysis, 电子工业出版社影印,2003年1月。 
[6] T. H.Cormen, C. E.Leiserson, R. L. Rivest, C. Stein, Inroduction to Algorithms, 高等教育出版社影印,2002年5月。 
[7] D. E.Knuth 著,苏运霖 译,《计算机程序设计艺术,第1卷基本算法》,国防工业出版社,2002年。 
[8] J. Kleinberg, E. Tardos. Algorithm Design. Addison Wesley, 2005.
[9] C. A. Shaffer, Data Structures and Algorithm Analysis in C++, Third Edition, Dover Publications., 2011.
[10] 王晓东,《算法设计与分析》 ,清华大学出版社,2003年1月。