Data Structure and Algorithm (A) - 数据结构与算法 (A)

Undergraduate course, Peking University, School of Electronics Engineering and Computer Science, 2019

The Data Structure and Algorithm course helps students understand principles and theories of Data Structures and Algorithms. The course will equip students with the ability to do complexity analysis, design and implement efficient and effective data structures and algorithms.

Content

This course covers programming, data structures, and algorithm analysis. Our topics include the organization and implementation of fundamental data structures such as list, binary tree, tree and forest, graph; the efficient sorting and searching algorithms; complexity analysis and tradeoff; data abstraction and problem solving.

Note: The course is taught in Chinese.

本课程仅使用中文授课

课程要求

先修课程:

Introduction to Computation (A)

Discrete Mathematics and Structures

参考教材:

数据结构与算法,张铭、王腾蛟、赵海燕,高等教育出版社,2008.6,1,9787040239614; 数据结构与算法实验教程,张铭、赵海燕、王腾蛟、宋国杰,高等教育出版社,2011.1,数据结构与算法——学习指导与习题解析,张铭、赵海燕、王腾蛟,高等教育出版社,2005.10.

课程大纲

  1. 介绍基本数据结构和基本算法分析技术。这一部分将介绍常用基本数据结构的ADT及其应用,包括线性结构(线性表、串、栈和队列)、二叉树、树、图等;同时基于各种数据结构所实施的运算讨论算法分析的基本技术,掌握时间和空间权衡的原则。
  2. 介绍排序、检索和索引技术。这一部分将主要讨论插入排序、Shell排序、堆排序、快速排序、基数排序等常用的各种排序算法及其时间和空间开销,并介绍文件管理(数据在外存中的组织形式)和外排序技术,以及自组织线性表、散列表、倒排文件、B树等常见的检索和索引技术,及其各自相应的时间和空间开销。
  3. 通过本课程的学习,学生将基本掌握数据结构和算法的设计分析技术,提高程序设计的质量;根据所求解问题的性质选择合理的数据结构并对时间空间复杂性进行必要的控制。
  4. 数据结构和算法简介(2学时) 数据结构定义(逻辑结构、存储结构、运算),抽象数据类型,算法及其算法度量和评价(大O表示法及其运算规则)。
  5. 线性表(2学时) 线性表(向量、链表)
  6. 栈和队列(8学时) 栈和队列(顺序、链接)、栈的应用。 根据专业选讲递归到非递归的转换机制和方法。
  7. 字符串(4学时) 字符串抽象数据类型,存储表示和类定义,字符串的运算,字符串的模式匹配/
  8. 二叉树 (8学时) 二叉树的概念及性质,二叉树的抽象数据类型,二叉树的周游,二叉树的存储实现、二叉检索树、堆与优先队列、Huffman编码树。 此外,根据学生的情况,选讲非递归深度优先周游二叉树和穿线二叉树。
  9. 树与森林(4学时) 树的概念,森林与二叉树的等价转换,树的抽象数据类型,树的周游,树的链式存储,树的顺序存储。

期中考试(2学时)

  1. 图 (6学时) 图的基本概念,图的抽象数据类型,图的存储结构,图的周游(深度优先、搜索、广度优先、拓扑排序),最短路径问题,最小支撑树(Prim算法、Kruskal算法)。

  2. 内排序(6学时) 排序问题的基本概念,三种简单排序算法(插入排序、起泡排序、选择排序),Shell排序,快速排序,归并排序,堆排序,基数排序。 根据专业,选讲各种排序算法的理论和实验时间代价的讨论以及排序问题的下限的研究。

  3. 文件管理和外排序(2学时) 介绍外排序的特点,二路外排序、置换选择排序。

  4. 检索(4学时) 检索的基本概念,介绍基于线性表的检索,基于集合的检索、散列方法。

  5. 索引技术(2学时) 倒排索引,B+树等动态索引组织。

  6. 高级数据结构(2学时) 根据专业,选讲广义表、AVL树等。 以课堂讲授为主,同时借助网络教学平台,拓展课堂讲授的相关知识,便于同学自主学习、巩固课堂所学内容。另外,组织3次独立的习题课(6小时),针对学生作业中出现年的典型问题进行深入探讨。 鉴于数据结构与算法是与实践紧密结合的课程,配合理论教学,将加强上机实习的训练,通过合理、有效地设计上机题目,改进作业评核方式,调动学生的积极性,启发引导学生掌握基础理论并能创新应用,增强学生综合运用有关知识的能力。

成绩计算

  • 平时成绩(书面作业、上机作业+报告、课堂测试、考勤)30%,POJ在线测试10%,期中30%,期末30%。
  • 期中、期末考试,全学院的《数据结构与算法A》和《数据结构与算法A(实验班)》统一出题、统一阅卷。
  • 平时作业和上机作业由各班根据专业要求灵活掌握,教员协调给出成绩。
  • 注重综合能力的考评,平时表现突出、上机实践能力较强的可以得到奖励加分。