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

作为一门重要的专业必修课程,“数据结构与算法”课程既是对以往课程的深入和扩展,也是为将来更加深入地学习其他专业课程打下基础。课程中所学习的排序问题的算法,以及基本的树、图等数据结构,是计算机科学的基本功。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.数据结构期末复习(15)算法必须在有限步数后终止。6. 简单选择排序是一种不稳定的排序方法。 正确答案:对 解释: 7. 数据的逻辑结构是指数据的各数据项之间的逻辑关系。 正确答案:错 解释: 8. 二路归并排序算法的时间复杂度与初始数据序列的顺序无关。 正确答案:对 解释: 9. 排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终止。 https://blog.csdn.net/weidl001/article/details/144225500
2.数据结构习题整理(1.0)头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针; 头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息(内放头指针?那还得另配一个头指针!)首元素结点是指链表中存储线性表中第一个数据元素a1的结点.2.设计一个高效的算法。从顺序表L中删除所有介于x和y之间的https://www.ctyun.cn/zhishi/p-425145
3.数据结构与算法复杂度分析考试题目首先要清楚一点,大O表示法的时间复杂度高不代表程序运行时间长,空间复杂度高不代表占用空间多。 他们表示的是代码执行时间随着数据规模增长的变化趋势。和算法储存空间与数据规模之间的增长关系。 时间复杂度判断方法 1、只关注循环次数最多的一段代码 2、加法法则:总复杂度等于量级最大的那段代码的复杂度 https://blog.51cto.com/u_16099323/12801870
4.数据结构与算法进阶:从经典题型到互联网企业面试真题解析排序算法是对一组元素按照某种顺序进行排列的算法,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 搜索算法 搜索算法是一种通过逐步检查是否满足条件来找到目标元素的算法,常见的搜索算法包括线性搜索、二分搜索、深度优先搜索、广度优先搜索等。 https://www.jianshu.com/p/21e404925015
5.算法和数据结构——查找和排序腾讯云开发者社区查找和排序都是程序设计中经常用到的算法。查找相对而言较为简单,不外乎顺序查找、二分查找、哈希表查找和二叉排序树查找。排序常见的有插入排序、冒泡排序、归并排序和快速排序。其中我们应该重点掌握二分查找、归并排序和快速排序,保证能随时正确、完整地写出它们的代码。同时对其他的查找和排序必须能准确说出它们的特https://cloud.tencent.com/developer/article/1043944
6.阿里P8整理总结,入职大厂必备Java核心知识(附加面试题)在工作中,SQL语句的优化和注意的事项哪些库或者框架用到NIOSpring 都有哪几种注入方式,什么情况下用哪种,ioc实现原理如何定位一个慢查询,一个服务有多条SQL你怎么快速定位聚集索引和非聚集索引知道吗?什么情况用聚集索引什么情况用非聚集索引Nosql引擎用的什么存储结构,关系型数据库和NoSQL各自的优劣点是什么,如何技https://maimai.cn/article/detail?fid=1743334357&efid=sOuzOvxo7Btca8Bm00ZkhA
7.海量数据处理(2)hash_map统计。大文件转化成了小文件,便可以采用hash_map(ip,value)分别对1000个小文件的IP进行频率统计,找出每个小文件中出现频率最高的IP,总共1000个IP。 (3)堆/快速排序。统计出1000个频率最高的IP后,依据它们各自频率的大小进行排序(可采取堆排序),找出最终那个出现频率最高的IP,即为所求。 http://mc64e8402.ptpress.cn/articleDetails?id=C7E3EF8FC0F00001D0BAD790107014BD
8.计算机软件技术基础——6.2排序.ppt计算机软件技术基础 教 师:曾晓东 电 话E_mail: zengxiaodong@263.net 6.2 排序 一、基本概念 二、选择排序 三、插入排序 四、交换排序 五、归并排序 六、各种排序算法的比较 一、基本概念 1. 排序 设有含n个记录的序列为{ R1,R2,…,Rn },其相应的关键字序列为{ K1,K2,,Kn }。现要求确定一种https://max.book118.com/html/2018/0512/166065237.shtm
9.PHP排序算法之快速排序(QuickSort)及其优化算法详解php技巧【 如果你想靠AI翻身,你先需要一个靠谱的工具!】本文实例讲述了PHP排序算法之快速排序(Quick Sort)及其优化算法。分享给大家供大家参考,具体如下:基本思想:快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,https://www.jb51.net/article/138630.htm