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

作为一门重要的专业必修课程,“数据结构与算法”课程既是对以往课程的深入和扩展,也是为将来更加深入地学习其他专业课程打下基础。课程中所学习的排序问题的算法,以及基本的树、图等数据结构,是计算机科学的基本功。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.这才是你最想要的数据结构与算法学习路线四、数据结构与算法怎么学 数据结构与算法的学习,简单而言就是: 学习对应的专题知识点,刷对应专题的题。 前半句属于理论学习,后半句属于实战演练,数据结构与算法怎么学?就按照这两部分来学。 1、理论学习 理论学习就是学习对应的专题知识点,一般就是看视频和书籍。 https://zhuanlan.zhihu.com/p/582109772
2.数据结构与算法(非常详细)从零基础入门到精通,看完这一篇就够了(1)特点:采用链式存储(广义表的数据元素可以具有不同的结构) 七、树和二叉树 1、树 术语: 结点(包含数据和分支)、结点的度(结点的子树数)、树的度(树中各结点度的最大值)、叶子(度为零)、分支结点(度不为零)、兄弟结点、层数、树的深度(高度)、森林(零或者有限棵互不相交的树的集合)、有序树(结点的子树从https://blog.csdn.net/2401_84240189/article/details/138821288
3.什么是数据结构?什么是算法?怎么学习数据结构与算法?怎么学习数据结构与算法? 01 前言 学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
4.怎么学习数据结构与算法00:00/00:00 怎么学习数据结构与算法 IT老邪讲编程发布于:辽宁省2023.05.30 22:17 分享到https://learning.sohu.com/a/680501133_121730054
5.数据结构应该怎么学?51CTO博客数据结构与算法有用么? 这里我摘录了一个知乎的高赞回答给大家做参考: ? 个人认为数据结构是编程最重要的基本功没有之一!学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链https://blog.51cto.com/u_15185954/3034379
6.如何学习数据结构和算法Trie是另一种可以快速搜索前缀/子字符串的树。Disjoint Sets是一种特殊类型的集合,它将其成员分隔成不重叠的子集,对联合查找算法很有用。跳跃列表是LinkedList的优化版本,它减少了查找特定节点所需的时间。 基本的搜索/遍历算法 所有的数据结构都是用来保存信息的。有些结构需要特殊的方式来有效地访问这些信息,这比简https://www.jianshu.com/p/8231f94121c1
7.《学习JavaScript数据结构与算法第3版》([巴西]洛伊安妮·格罗纳数据结构与算法教程书籍 用JavaScript深度学习常用的数据结构与算法核心技术 高效解决计算机网络编程常见问题 作者:[巴西]洛伊安妮·格罗纳(LoianeGroner)出版社:人民邮电出版社出版时间:2019年05月 手机专享价 ¥ 当当价降价通知 ¥46.30 定价 ¥69.00 http://product.dangdang.com/27872612.html
8.学习JavaScript数据结构与算法(格罗纳)中文pdf完整版[10MB]电子书《学习JavaScript数据结构与算法》首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。 https://www.jb51.net/books/532592.html
9.2022数据结构与算法《王道》学习笔记(十一)KMP算法详细归纳简介:2022 数据结构与算法《王道》学习笔记 (十一)KMP算法 详细归纳总结 改进的模式匹配算法 前言 KMP算法参考博客 暴力模式匹配算法的最坏时间复杂度为O(nm),其中n和m分别为主串和模式串的长度。 改进的模式匹配算法——KMP算法 上图的匹配过程,在第三趟匹配中,i=7、j=5的字符比较不等,于是又从i=4、j=https://developer.aliyun.com/article/1315912
10.算法数据结构体系学习班马士兵教育官网注意原“算法与数据结构基础班”已经过期。所有内容都被现在的“算法数据结构体系学习班”重新讲述,还增加了内容,增加了题目练习。原“算法与数据结构基础班”的所有内容,对应现在的“算法数据结构体系学习班”的1-23节。 注意原“算法与数据结构进阶班”已经过期。所有内容已经被现在的“算法数据结构体系学习班”和“https://www.mashibing.com/course/339
11.前端学数据结构与算法(六):二叉树的四种遍历方式及其应用上一章我们从0到1的实现了一颗二叉搜索树,以及理解了二叉搜索树的特性与基本操作,这一章介绍关于二叉树的更多操作,也就是树的遍历。主要包括前序遍历、中序遍历、后序遍历、层序遍历,前面三种也叫深度优先遍历(DFS),最后的层序遍历也叫广度优先遍历(BFS),理解这四种遍历方式的不同,再遇到树相关的算法问题时,也https://cloud.tencent.com/developer/article/1709410
12.书单豆瓣高分&全网热评的算法神作本书结合竞赛实例,从数据结构、算法策略、时间复杂度与空间复杂度优化等多个角度,对各类经典问题进行求解,重点讲解了如何分析问题和解决问题,并提供了优化过程,引导读者进行刷题实战,进而提高算法思维能力,以更高的视角看待问题。http://www.broadview.com.cn/article/420385
13.北京林业大学《数据结构与算法》课件PPT期末总结.pptx北京林业大学《数据结构与算法》课件PPT 期末总结.pptx,北京林业大学信息学院 数据结构期末总结 Office: 西配楼304(软件教研室) 北京林业大学信息学院 2021年5月6日 1、选择题 2、判断题 3、填空题 4、应用题 5、算法设计题(程序填空和编写程序) 期末考试题型 2021年5月https://max.book118.com/html/2021/0506/6003214113003144.shtm
14.数据结构与算法大致会学些什么内容?会涉及道那些知识点?数据结构与算法,是计算机科学领域的基石。在这个领域中,我们主要学习的是基本的数据结构和算法。数据结构包括但不限于线性表、堆栈、队列、树等,这些都是组织数据的方式。通过这些结构,我们能够高效地存储和管理数据。例如,堆栈和队列用于任务调度,树用于文件系统组织。算法方面,我们涉及排序算法、查找https://zhidao.baidu.com/question/1651039866385746660.html