“数据结构与算法”教学大纲

作为一门重要的专业必修课程,“数据结构与算法”课程既是对以往课程的深入和扩展,也是为将来更加深入地学习其他专业课程打下基础。课程中所学习的排序问题的算法,以及基本的树、图等数据结构,是计算机科学的基本功。B+树、Hash等高级数据结构,也是数据库、操作系统、编译原理、计算机网络等后续课程的基础。

1.课程基本情况

课程编号

04830540

课程名称

数据结构与算法A(实验班)

DataStructureAndAlgorithmA

一年级

二年级

三年级

四年级

适用院系

信息学院全体学生

课程定位

骨干基础课,必修课

学分

3学分

总学时

54学时

先修课程

计算引论,程序设计实习,集合论与图论,

概率统计A

后续课程

数据结构与算法实习,程序设计语言原理

教学方式

本课程是“数据结构与算法A”替代课程,针对基础比较好、学习能力突出、学有余力的实验班学生设置。课程将加大“数据结构与算法A”的深度和广度,提供更多的研究和讨论机会,因材施教、培养领袖人才。

鉴于数据结构与算法是与实践紧密结合的课程,配合理论教学,将加强上机实习的训练,通过合理、有效地设计上机题目,改进作业评核方式,调动学生的积极性,启发引导学生掌握基础理论并能创新应用,增强学生综合运用有关知识的能力。

课时分配

3(课堂教学)+1(教学实验)/周

考核方式

平时(书面作业、课堂测试)20%,上机(+报告)15%,期中20%,期末20%,高级数据结构20%,考勤和态度5%。

期中、期末考试,全学院的“数据结构与算法A”和“数据结构与算法A(实验班)”统一出题、统一阅卷。平时作业和上机作业由各班根据专业要求灵活掌握,教员协调给出成绩。

注重综合能力的考评,平时表现突出、上机实践能力较强的可以得到奖励加分。

主要教材

参考资料

其它信息

2.教学目的和要求

3)初步掌握稀疏矩阵、广义表等高级线性结构技术,了解Trie结构、AVL树等高级树形结构。

4)对抽象数据类型有深入的理解,能根据所求解问题的性质选择合理的数据结构,设计并完成处理海量数据的复杂应用系统。

3.课程特色

“数据结构与算法”是一门重要的计算机类骨干基础课程。其主要目的是使学生较全面地理解数据结构的概念、掌握各种数据结构与算法的实现方式,比较不同数据结构和算法的特点。通过学习,使学生能够提高用计算机解决实际问题的能力。

在讲授过程中,将调动学生的积极性,采取研究式的学习方法。有些较基础的内容采用学生综述、答辩、小测验的形式,培养学生的自学能力。引导学生跟踪数据结构与算法的前沿应用技术,引入研读论文并作报告的讨论班形式,培养学生的捕捉新理论、新技术的科研能力。

最后的合作大实习题由学生自己提出,并组织团队完成。由助教引导讨论,从需求分析、模块设计、编程实践、调试测试各个阶段进行引导,加强学生们综合应用数据结构和算法知识的能力。

本课程将通过设置的课程网站提供课堂讲义和最新的参考材料。

4.课程内容摘要和知识点

章节

课时

内容摘要和知识点

重要性

1

数据结构和算法简介

2

数据结构定义(逻辑结构、存储结构、运算)

抽象数据类型

算法及其算法度量和评价(大O表示法及其运算规则)

难度

▃▄▅

★★★★★

线性表、栈和队列

8

线性表(向量、链表)

栈和队列(顺序、链接)、栈的应用

根据专业选讲递归到非递归的转换机制和方法

▃▄▅▆

★★★★

3

字符串

4

字符串抽象数据类型,存储表示和类定义

字符串的运算

字符串的模式匹配

▃▄▅▆▇

★★★

二叉树

10

二叉树的概念及性质,二叉树的抽象数据类型

二叉树的周游

二叉树的存储实现

二叉检索树、堆与优先队列、Huffman编码树

★非递归深度优先周游二叉树和穿线二叉树

5

树与森林

树的概念,森林与二叉树的等价转换,树的抽象数据类型

树的周游

树的链式存储,树的顺序存储

6

图的基本概念,图的抽象数据类型,图的存储结构

图的周游(深度优先、搜索、广度优先、拓扑排序)

最短路径问题,最小支撑树(Prim算法、Kruskal算法)

7

内排序

排序问题的基本概念,三种简单排序算法(插入排序、冒泡排序、选择排序)

Shell排序,快速排序,归并排序,堆排序,基数排序

文件管理和外排序

外排序的特点

二路外排序

置换选择排序

9

检索

检索的基本概念

基于线性表的检索

基于集合的检索

散列方法

索引技术

倒排索引

B+树等动态索引组织

★红黑树

11

高级数据结构

广义表

字符树

★AVL树

★伸展树

1)课程基本情况

04830050

数据结构与算法

平时(书面作业、课堂测试)20%,上机(+报告)15%,期中20%,期末40%,考勤和态度5%。

1.张铭、王腾蛟、赵海燕,《数据结构与算法》,高等教育出版社,2008年6月。

2.许卓群、杨冬青、唐世渭、张铭,《数据结构与算法》,高等教育出版社,2004年7月。

3.张铭、赵海燕、王腾蛟,《数据结构与算法习题指导》,高等教育出版社,2005年8月。

4.ThomasH.Cormen,CharlesE.Leiserson,RonaldL.Rivest,CliffordStein,InroductiontoAlgorithms,MITPress,2ndedition,2001.高等教育出版社影印。

2)教学目的和要求

4.对抽象数据类型有深入的理解,能根据所求解问题的性质选择合理的数据结构,设计并完成处理海量数据的复杂应用系统。

3)课程特色

最后的合作大实习题由教师指导学生自己提出,并组织团队完成。由助教引导讨论,从需求分析、模块设计、编程实践、调试测试各个阶段进行引导,加强学生们综合应用数据结构和算法知识的能力。

课程通过设置的课程网站提供课堂讲义和最新的参考材料。

4)课程内容摘要和知识点

★选讲递归到非递归的转换机制和方法

★选讲非递归深度优先周游二叉树和穿线二叉树

★选讲置换选择排序、多路归并选择树

★选讲红黑树

12

★选讲AVL树

★选讲伸展树

数据结构与算法B

DataStructureAndAlgorithmB

信息学院编程能力不太强的学生

计算引论,程序设计实习

考虑到选修B类课程的学生编程能力较弱,会安排助教加强对学生上机实习的辅导。

期中考试、期末考试与学院的《数据结构与算法A》和《数据结构与算法A(实验班)》有60%的基础内容统一出题、统一阅卷,另外40%独立命题。平时作业和上机作业由各班根据专业要求灵活掌握,教员协调给出成绩。

4.算法与数据结构,张乃孝主编,高等教育出版社,2006年1月

5.ThomasH.Cormen,CharlesE.Leiserson,RonaldL.Rivest,CliffordStein,InroductiontoAlgorithms,MITPress,2ndedition,2001.高等教育出版社影印。

“数据结构与算法”是一门重要的计算机类基础课程。其主要目的是使学生较全面地理解数据结构的概念、掌握各种数据结构与算法的实现方式,比较不同数据结构和算法的特点。

树的链式存储

048305170

数据结构与算法实习

PracticeofDataStructuresandAlgorithms

计算机系和智能系

专业必修

2学分

32+80(理论+上机实习)

数据结构与算法A

算法分析与设计

理论与实践结合

理论32学时:教员课堂讲授26小时,学生编程经验交流6小时

学生独立实践80学时:数据结构与算法实验50小时,综合上机实习30小时

平时20%,算法实验20%,综合上机题40%,期末考试20%。

1.张铭、赵海燕、王腾蛟,《数据结构与算法习题指导》,高等教育出版社,2005年8月。

2.张铭、王腾蛟、赵海燕,《数据结构与算法》,高等教育出版社,2008年6月。

3.许卓群、杨冬青、唐世渭、张铭,《数据结构与算法》,高等教育出版社,2004年7月。

5.M.H.Alsuwaiyel,AlgorithmsDesignTechniquesandAnalysis,电子工业出版社影印,2003年1月。

6.B.Kernighan&R.Pike,ThePracticeofProgramming,Addison-Wesley,1999.(中译本:《程序设计实践》,裘宗燕译,机械工业出版社,2000年8月

同修课程:数据结构与算法A

配合“数据结构与算法”理论课程的学习,介绍一些程序风格、设计、测试和排错等软件工程的基本知识和方法;通过一些趣味例题,系统地介绍“数据结构与算法”理论课程涉及到的穷举法、回溯法、贪心法、分治法、动态规划等算法基本思想;介绍图和问题建模、数据结构与算法的应用和实践。

培养学生独立地实现常用基本数据结构的ADT以及相应的STL数据结构,解决一些实际问题,独立编写中小型应用程序。灵活应用基本数据结构,并结合排序、检索、文件、索引等技术,合作编写比较综合的大型应用程,提高学生的实际动手能力。通过本课程的学习,为后续的专业基础课和专业课程打下坚实的基础。

把《数据结构与算法实习》作为辅助《数据结构与算法》的计算机系学生必修课,强化了计算机系学生的实践能力训练。实习课内容划分为C/C++基本程序技巧训练、界面排错和测试、基本数据结构训练、基本算法、数学建模训练5个模块。

从问题求解的角度,培养学生数据结构理论基础、问题数据和算法抽象、数据结构与算法设计的能力。在培养基本问题求解能力的同时,注重实践能力和工程能力的培养,使得学生遵从软件开发的规范性。以项目驱动,从软件工程的角度对学生系统地进行需求分析、数学建模、数据结构与算法设计、程序实现测试调试、文档编写训练。不仅要求进行简单的实现,更要求进行工程实现的设计。学生不仅仅能完成自己承担的开发任务,还能从系统级认识整个项目,积累重大项目的组合、合作协调经验,培养项目组织和管理能力,创造性地解决工程中遇到的问题。

通过典型案例教学,引导学生深入思考,激发创新思想火花,充分调动学生学习的主动性,实现教与学的互动。学生从案例中进行研究型学习,并在研究性学习过程中主动运用所学知识来分析问题、解决问题,根据问题的需求来主动获取新知识,从而强化创新意识和创新能力,相应地提高理论联系实际能力、实践动手能力和科研能力。

简介

数据结构与算法实习简介

C/C++基本程序技巧

界面排错和测试

问题空间和典型的算法思想

数学建模基本思想

程序设计风格

程序的良好风格

程序设计和实现技巧

面向对象技术

STL的基本概念和常用容器

界面技术

人机界面基本原则

排错的技巧

测试

性能

可扩展性

项目管理

项目需求分析

项目开发计划

软件项目的实施(控制)

基本算法与枚举法

问题状态空间的建立

枚举的思想

例题:百钱百鸡、猴子分桃、宴会彩灯、质数方阵

回溯法

递归思想强化

搜索解空间的思想

DFS和BFS搜索策略,分枝限定思想

例题:八皇后,0-1背包,火车进出栈

贪心法

最优子结构分解

最优解的正确性证明

例题:活动安排、可分割背包、区间覆盖

分治法

分-治-合的分治法原理思想

算法复杂性问题

例题:统计逆序对、导线与开关、二进制大整数乘法

动态规划

最优子结构和重复子问题,备忘录方法

各种算法的比较

例题:最优二叉搜索树、最长子序列、邮局问题、最大全1正方形

问题建模

问题建模专题讨论

数学模型

13

图的应用

图模型的建立

图的有效搜索

回溯高级技巧

14

数据结构综合应用

搜索引擎和数据库等应用系统中的线性表、字符串、图等基本数据结构

THE END
1.检查不同类型的数据有关在机器学习中检查不同类型数据的概念单元https://docs.microsoft.com/zh-cn/training/modules/introduction-to-data-for-machine-learning/4-examine-data-types
2.常见的10种算法算法 研究的目的:是为了更有效的处理数据,提高数据运算效率。数据的运算是定义在数据的逻辑结构上,但运算的具体实现要在存储结构上进行。 参考原文:常见的10种算法 - 知乎 一般有以下几种常用运算: 检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。 https://blog.csdn.net/zxf347085420/article/details/136269980
3.数据分析常用算法分析数据的算法数据分析常用算法 分析数据的算法,数据分析过程1)明确分析目的和思路2)目标数据确定和采集3)数据处理4)数据分析5)结果可视化及结果支持的决策四大基本数据分析算法1)趋势分析一般用于核心指标的长期跟踪最好的产出是比值:①环比②同比③定基比比如2017年4月份比3月https://blog.51cto.com/u_16213721/10298836
4.什么是数据结构?什么是算法?怎么学习数据结构与算法?学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。 本文将回顾数据结构与算法的基础知识,学习日常所接触场景中的一些算法和策https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
5.数据结构基本概念算法(递归算法)及性能分析与量度算法举例(递归) 定义 所谓递归,从字面意思可以看出有两个过程:“递去”和“归来”,即在“递去”过程中满足某个条件后进行“归来”。 绝大数编程语言支持函数的==自调用==,在这些函数可以通过调用自身来进行递归。 举例 整数n的阶乘(n!) 代码如下 https://www.jianshu.com/p/f7478241139c
6.Java数据结构与算法入门实例详解java这篇文章主要介绍了Java数据结构与算法入门实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下https://www.jb51.net/article/207215.htm
7.算法I~IV(C++实现)――基础数据结构排序和搜索(第三版)(豆瓣)图书算法I~IV(C++实现)――基础、数据结构、排序和搜索(第三版) 介绍、书评、论坛及推荐https://book.douban.com/subject/1143801/
8.2023哈工大考研854计算机基醇点之计算机系统与数据结构1)数据结构与算法的概念 数据结构与算法及其相关的基本概念,算法及其复杂性分析 2)线性表 线性结构及其操作算法,线性表的应用及算法 3)树与二叉树 二叉树的定义、性质、表示、遍历算法,树的表示、操作算法,森林与二叉树关系,树与二叉树的应用及算法 4)图及其相关算法 图的相关概念,图的存储结构与搜索算法,图的https://www.gaodun.com/kaoyan/1267636.html
9.数据分析中的数据挖掘需要哪些算法数据分析中的数据挖掘需要以下算法:一、分类算法;二、聚类算法;三、关联规则算法;四、分类与回归树算法;五、Adaboost算法;六、期望最大化算法;七、最近邻算法;八、神经网络算法。在数据分析中,数据挖掘算法可以帮助发现数据中隐藏的模式、关系、趋势和异常。 https://www.linkflowtech.com/news/1594
10.数据挖掘的常见算法有哪些?数据挖掘是一种通过从大量数据中提取知识和信息的方法,以支持业务决策、市场分析和科学研究等领域。在数据挖掘过程中,算法是最重要的组成部分之一。以下是常见的数据挖掘算法。1.分类算法分类算法是一类用于将数据样本分为不同类别的算法。这些算法通常使用 https://www.cda.cn/bigdata/202782.html
11.数据科学家最常使用的十大算法大数据干货(二)本文来自于KDnuggets所做的十大算法调查,对于数据工程师常用的算法进行排名,并对其在2011-2016年间的变化进行介绍。 基于调查,KDnuggets总结出了数据科学家最常使用的十大算法,它们分别是: ▲Regression 回归算法 ▲Clustering 聚类算法 ▲Decision Trees/Rules 决策树 https://www.evget.com/doclib/s/14/10616
12.北京市数据知识产权登记常见问题解答(一)根据《北京市数据知识产权登记管理办法(试行)》第二条规定,数据持有者或者数据处理者依据法律法规规定或者合同约定收集,经过一定规则或算法处理的、具有商业价值及智力成果属性的处于未公开状态的数据集合可以申请数据知识产权登记。 2.数据知识产权的登记主体是谁? https://www.bjippc.cn/general/cms/news/info/news/3c06e7a152bd4f43a48c07366d47dbad.html?id=3c06e7a152bd4f43a48c07366d47dbad
13.程序员应该知道的十个基础算法腾讯云开发者社区一. 排序算法 1.冒泡排序:用于将一组数据按照升序或降序进行排列。它通过比较相邻元素的大小来进行交换,直到整个序列排序完成。 2.快速排序:快速排序是一种常用且高效的排序算法。它采用递归的方式将问题划分为更小的子问题,并使用一个基准元素进行排序。 https://cloud.tencent.com/developer/article/2352039