算法与数据结构 教学大纲

合集下载

算法与数据结构课程教学大纲

算法与数据结构课程教学大纲

《算法与数据结构》课程教学大纲【课程编号】:【英文译名】:Algorithm and Data Structure【适用专业】:电子信息工程、自动化、生物医学工程、通信工程等专业【学分数】:2【总学时】:32【实践学时】:8一、本课程教学目的和课程性质《算法与数据结构》是计算机软件学科中重要的理论和技术基础课,目前它也是信息类各专业的一门重要选修课程。

本课程的教学目的是通过学习、研究和分析各种数据的逻辑结构,让学生充分理解数据在计算机中的存储形式,即物理结构。

在此基础上,学生能设计和选择出适合相应数据的管理及操作算法,以便于编写出健壮高效的应用程序。

本门课程的开展,将为培养具有素质好、技术强的软件高级工程技术人才做准备。

二、本课程的基本要求通过学习本门课程,学生应该了解典型的数据结构与算法的关系;应该具有结合实际应用,设计出高效算法和数据结构的能力。

1、熟悉各种基本数据结构的定义,性质和特点;2、掌握各种基本数据结构的逻辑结构和存储结构及重点算法;3、初步掌握算法分析的技巧以及如何根据实际问题设计出一个高效率算法;4、初步具备结合专业应用,将数据结构知识用于专业程序设计中的能力。

三、本课程与其它课程的关系前修课程:《计算机文化基础》、《C语言程序设计》后续课程:《软件工程》、《网络编程》等四、课程内容1、数据结构与算法的基本概念内容体系:数据结构与算法的概念以及它们之间的关系。

知识点:数据结构的概念和基本术语;基本数据类型;数据抽象和抽象数据信息工程学院类型;算法描述与分析。

重点:数据结构的概念;算法分析。

难点:抽象数据类型;算法分析。

2、线性表内容体系:简单数据结构——线性表的结构与操作实现。

知识点:线性数据结构的特点;线性表的逻辑结构;线性表的顺序存储结构;线性链表;线性表的应用举例。

重点:线性表的逻辑结构和存储结构。

难点:单链表的建立和操作算法。

3、堆栈和队列内容体系:堆栈和队列的逻辑特征与操作实现。

算法与数据结构课程设计教学大纲

算法与数据结构课程设计教学大纲

《算法与数据结构课程设计》教学大纲一、课程名称:算法与数据结构课程设计课程代码:020171二、课程类别(基础、专业基础、专业):专业基础课三、设计周数:2周四、大纲说明(一)适用专业:计算机科学与技术(二)主要先修课程和后续课程1、先修课程:高级语言程序设计、算法与数据结构2、后续课程:操作系统、编译原理、软件工程、数字图象处理五、课程设计目的及基本要求(一)课程设计目的1、培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。

2、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。

3、培养学生初步的软件设计及软件测试的能力。

(二)基本要求1、运用算法与数据结构的基本知识解决一个实际的编程问题。

2、每个小组的4~5个学生设计一个或多个与数据结构课程内容相关的具体课题。

每个学生独立完成课题内容的一部分,以实现一个解决具体问题的模拟或实际算法。

3、上机完成个人和小组全部课题的程序调试的全过程。

4、根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论。

5、演示答辩。

演示小组全部课题的个人部分。

答辩三个问题:数据结构的基础题、与编程内容相关的问题、与具体课题的算法内容相关的问题。

六、课程设计内容及安排1. 课题任务布置:含课题简介、课题分组、课题总体要求、界面设计要求、设计报告要求、课题相关理论教学及日程安排。

2. 上机学习课题需要用到的编程相关的内容,介绍课题实现的全过程。

3. 查阅资料,了解课题的目的、意义、原理和实现方法,学习和掌握课题的实现方法。

4. 运用算法与数据结构的知识,分析、设计完整的课题的实现方法。

5. 上机完成设计目标,包括界面设计、输入输出数据接口调试、课题的模块集成及程序调试。

6. 根据设计报告要求编写设计报告,主要内容包括目的意义、原理和实现方法简介、设计内容、实验结果情况说明、结论。

算法与数据结构大纲

算法与数据结构大纲

算法与数据结构大纲一、课程简介算法与数据结构是计算机科学中的核心基础课程,旨在介绍算法设计和数据结构的基本概念、原理和方法,培养学生的算法思维和问题解决能力。

二、教学目标1. 了解算法与数据结构的基本概念和原理;2. 掌握常见的数据结构及其操作;3. 学习常见的算法设计策略和分析方法;4. 能够运用所学知识解决实际问题。

三、教学内容1. 算法基础- 算法的概念和特征- 算法的表示方法- 算法的分析:时间复杂度和空间复杂度2. 数据结构基础- 数据结构的概念和分类- 抽象数据类型- 数据结构的操作和实现3. 线性结构- 数组- 链表- 栈和队列4. 树状结构- 树的概念和基本操作- 二叉树- 二叉搜索树- 平衡二叉树5. 图状结构- 图的概念和基本操作- 图的存储和表示- 图的遍历6. 排序算法- 插入排序- 选择排序- 冒泡排序- 快速排序- 归并排序7. 查找算法- 顺序查找- 二分查找- 哈希查找8. 算法设计策略- 分治法- 动态规划法- 回溯法- 贪心算法四、教学方法1. 理论讲解:通过课堂讲解,介绍算法与数据结构的基本概念、原理和方法;2. 编程实践:通过编程练习,让学生掌握数据结构的实现和算法的应用;3. 案例分析:通过实际问题的解决,让学生学会运用所学知识解决实际问题;4. 小组讨论:通过小组讨论,培养学生的团队合作和问题解决能力。

五、考核方式1. 平时作业:包括课后作业、编程练习和课堂表现等;2. 期中考试:考核学生对前半部分教学内容的掌握程度;3. 期末考试:考核学生对整个课程内容的掌握程度。

六、教学资料1. 教材:《算法与数据结构》(教材名称),(作者)著,(出版社)出版;2. 参考资料:《数据结构与算法分析》(参考书名称),(作者)著,(出版社)出版。

七、教学设备1. 计算机实验室;2. 投影仪;3. 编程软件。

算法与数据结构教学大纲

算法与数据结构教学大纲

算法与数据结构教学大纲总述:本课程旨在通过深入理解和分析常用算法和数据结构来培养学生分析和解决实际问题的能力。

课程内容包括算法分析、算法设计、基本数据结构和高级数据结构等方面的内容。

通过课程的学习,学生将掌握基本的算法和数据结构知识,并能够灵活运用这些知识解决实际问题。

一、课程目标1.培养学生分析和解决实际问题的能力。

2.学习和掌握常用的算法和数据结构知识。

3.培养学生的编程能力和代码实现能力。

4.提升学生的学习和独立解决问题的能力。

二、教学内容1.算法分析a.时间复杂度和空间复杂度分析b.最坏情况、平均情况和最好情况分析c.渐进符号表示法d.递归算法分析2.基本数据结构a.数组和链表b.栈和队列c.堆和二叉树d.散列表3.算法设计a.贪心算法b.动态规划算法c.分治算法d.回溯算法e.分支限界算法4.高级数据结构a.并查集b.图的表示和遍历c.图的最短路径算法d.图的最小生成树算法e.树和平衡树三、教学方法1.理论讲授与案例分析相结合,通过具体案例分析来加深学生对算法与数据结构的理解。

2.课堂讲解配合编程实践,通过编写代码来巩固和应用所学知识。

3.实验和作业设计,通过完成实验和作业来检验学生掌握情况,并帮助学生独立解决问题的能力。

四、评价方法1.平时成绩:包括课堂表现、作业完成情况和实验报告等。

2.期中考试:考查学生对算法和数据结构的理解和应用能力。

3.期末考试:考查学生对整个课程内容的综合掌握情况。

五、参考教材1.《算法导论》2.《数据结构与算法分析,C语言描述》3. 《数据结构与算法分析,Java语言描述》4.《算法与数据结构教程》六、课程实施计划1.第1-2周:算法分析基础2.第3-6周:基本数据结构(数组、链表、栈、队列等)3.第7-10周:基本算法设计(贪心算法、动态规划算法等)4.第11-14周:高级数据结构(图、树等)5.第15-16周:复习与整理6.第17-18周:期末考试以上就是《算法与数据结构》课程的教学大纲。

数据结构 教学大纲

数据结构 教学大纲

数据结构教学大纲数据结构教学大纲导言:数据结构是计算机科学中的重要基础知识,它涉及到如何组织和存储数据以及如何操作和管理数据的方法和技术。

在计算机科学领域,数据结构是构建算法和设计高效程序的基石。

本文将探讨数据结构教学的重要性、教学目标和内容以及教学方法和评估方式。

一、教学目标数据结构教学的目标是培养学生的数据抽象和问题解决能力,使他们能够理解和应用不同的数据结构,设计和实现高效的算法,并能够分析和评估算法的时间和空间复杂度。

具体的教学目标包括:1. 理解数据结构的基本概念和原理,包括数组、链表、栈、队列、树、图等;2. 掌握不同数据结构的存储和操作方法,包括插入、删除、查找等基本操作;3. 熟悉常见的算法和数据结构,如排序、搜索、哈希表等;4. 能够分析和评估算法的时间和空间复杂度,理解算法的效率和优化;5. 能够应用数据结构解决实际问题,如字符串匹配、图的遍历等。

二、教学内容数据结构教学的内容应包括以下几个方面:1. 基本数据结构:介绍数组、链表、栈、队列等基本数据结构的定义、特点和应用场景,并讲解它们的存储和操作方法;2. 树和图:介绍树和图的基本概念和性质,包括二叉树、平衡树、图的表示方法等,并讲解它们的遍历、搜索和最短路径等算法;3. 排序和搜索:介绍常见的排序算法,如冒泡排序、插入排序、快速排序等,并讲解它们的时间和空间复杂度。

同时,介绍线性搜索和二分搜索等常见的搜索算法;4. 哈希表:介绍哈希表的原理和应用,包括哈希函数的设计和冲突解决方法;5. 高级数据结构:介绍堆、图的高级算法、红黑树等高级数据结构和算法,并讲解它们的应用和性能分析。

三、教学方法为了提高数据结构教学的效果,可以采用以下教学方法:1. 理论讲解:通过讲解基本概念、原理和算法,帮助学生建立起对数据结构的整体认识和理解;2. 实例演示:通过实际的案例和实例,展示数据结构的应用和解决问题的能力;3. 编程实践:通过编写代码实现不同的数据结构和算法,提高学生的实际操作能力;4. 小组讨论:组织学生进行小组讨论,提高学生的合作和交流能力,同时加深对数据结构的理解;5. 实践项目:组织学生进行实践项目,如实现一个简单的搜索引擎或图像处理程序,以提升学生的综合能力和创新精神。

本科专业认证《程序设计、算法与数据结构(一)》教学大纲

本科专业认证《程序设计、算法与数据结构(一)》教学大纲

《程序设计、算法与数据结构(一)》教学大纲课程编号:0812000217课程名称:程序设计、算法与数据结构(一)英文名称:Programming,Algorithm and Data Structure I学分:3 课程性质:必修总学时:48 其中,讲授48学时,实验0学时,上机0学时,实训0学时适用专业:网络工程建议开设学期: 1先修课程:无开课单位:计算机与通信工程学院一、课程简介《程序设计、算法与数据结构(一)》是计算机科学与技术、软件工程、网络工程、通信工程专业基础课程,是课程群的启蒙课,也是学生进入大学后的第一门程序设计类课程,其目的是以C语言程序设计为基础,使学生熟悉C程序设计的基本语法,通过大量的编程练习,引导学生进入程序设计的殿堂,培养学生基本的数据结构和算法分析能力,为后续课程的学习打下基础。

二、课程目标与毕业要求依据2017培养方案中的毕业要求,考虑本课程与专业毕业要求的支撑关系,制定本课程学习目标。

课程目标1:通过程序三种基本控制结构,函数等知识点的学习,要求学生掌握结构化程序设计的基本思想,深入领会自顶向下、逐步求精的设计方法,识别网络工程项目的设计与开发过程中功能模块划分的问题。

(支持毕业要求 2.1能运用数学、自然科学及网络工程的基本原理,识别和判断网络工程问题的关键环节。

)课程目标2:在程序设计C语言后阶段学习过程中,针对成绩管理信息系统大作业的要求,将同学分组了解系统功能与应用背景,对具体的开发任务进行分工联调并编程实现。

通过系统实现强化个体的角色意识和团队意识。

(支撑毕业要求9.1:能够理解多学科背景下的团队中每个角色的定位与责任,具有团队合作意识,能够胜任个体、团队成员的角色任务。

)课程目标3:通过学习标准的C语言程序设计语法,运用函数、线性表、字符串、链表等基本知识,通过学习算法的描述方法,使学生能将实际问题转换成计算机描述的算法问题,培养学生运用程序算法的描述方法进行交流的能力。

《算法与数据结构课程设计》课程教学大纲

《算法与数据结构课程设计》课程教学大纲

《算法与数据结构课程设计》教学大纲
一、课程地位与目标
(一)课程地位
《算法与数据结构课程设计》是计算机专业实践环节必选的一门学科基础课。

课程在《算法与数据结构》理论教学的基础上,培养学生如何分析实际问题,并提出合理的数据结构和实现算法的能力,同时运用Java 等面向对象程序设计语言实现该数据结构和问题解决方法,并能从时间和空间复杂性两个角度对提出的算法进行评估,最终为信息系统的设计和开发奠定良好的算法分析和设计基础,最终让学生具备用计算机程序解决现实世界中较复杂工程问题的能力。

(二)课程目标
1.掌握常用数据结构(线性表、堆栈、队列、数组、字符串、树)和算法的基本原理与实现方法;
2
.熟悉算法的正确性、时间复杂性和空间复杂性分析; 3.学会运用基本的递归、排序和查找算法解决具体问题。

二、课程目标与相关毕业要求的对应关系
三、设计选题及任务要求
四、课程设计的主要进程与时间安排
注:进程安排的最少时间为0.5天。

五、课程考核与成绩评定
六、推荐教材与主要参考书
(一)推荐教材:
1.(美)刘易斯,(美)蔡斯著,Java软件结构与数据结构(第4版),清华大学出版社,2014年4月。

(二)主要参考书:
1. Mark Allen Weiss. Data Structures and Algorithm Analysis in JAVA(Third Edition)英文版。

机械工业出版社,2013年2月。

2. 吴海燕等编著:《数据结构》,浙江大学出版社,2011年6月1日第1版。

《数据结构与算法》教学大纲

《数据结构与算法》教学大纲

《数据结构与算法》教学大纲引言:数据结构与算法是计算机科学领域中非常重要的基础知识,它是计算机程序设计的基础。

本文将针对《数据结构与算法》这门课程,分析其教学大纲,并探讨其重要性和实际应用。

一、课程概述1.1 课程目标本课程旨在培养学生对数据结构和算法的理解和应用能力,使其能够灵活运用各种数据结构和算法解决实际问题,提高程序的效率和性能。

1.2 课程内容本课程主要包括以下内容:- 基本数据结构:数组、链表、栈、队列等- 高级数据结构:树、图、堆等- 常用算法:排序算法、查找算法、图算法等- 算法复杂度分析- 动态规划和贪心算法二、课程详细内容2.1 基本数据结构2.1.1 数组:线性表的顺序存储结构,介绍其定义、基本操作和应用场景。

2.1.2 链表:线性表的链式存储结构,包括单链表、双链表和循环链表,介绍其定义、基本操作和应用场景。

2.1.3 栈:先进后出的数据结构,介绍其定义、基本操作和应用场景。

2.1.4 队列:先进先出的数据结构,介绍其定义、基本操作和应用场景。

2.2 高级数据结构2.2.1 树:介绍二叉树、平衡二叉树和二叉搜索树,包括其定义、基本操作和应用场景。

2.2.2 图:介绍有向图和无向图,包括其定义、基本操作和应用场景。

2.2.3 堆:介绍最大堆和最小堆,包括其定义、基本操作和应用场景。

2.3 常用算法2.3.1 排序算法:介绍冒泡排序、插入排序、选择排序、快速排序、归并排序等排序算法的原理和实现。

2.3.2 查找算法:介绍顺序查找、二分查找等查找算法的原理和实现。

2.3.3 图算法:介绍深度优先搜索和广度优先搜索算法,以及最短路径算法。

2.4 算法复杂度分析2.4.1 时间复杂度:介绍算法的时间复杂度分析方法,包括最好情况、最坏情况和平均情况的复杂度。

2.4.2 空间复杂度:介绍算法的空间复杂度分析方法,包括辅助空间和输入空间的复杂度。

2.5 动态规划和贪心算法2.5.1 动态规划:介绍动态规划算法的原理和基本步骤,以及常见的动态规划问题。

《算法与数据结构》教学大纲

《算法与数据结构》教学大纲

《算法与数据结构》教学大纲一、使用说明(一)课程性质《数据结构》是一门专业基础课,在计算机软件的各个领域中均会使用到数据结构的有关知识。

本课程的先修课程为C程序设计或C++程序设计。

(二)教学目的学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作算法,并初步掌握时间和空间分析技术。

另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,要求学生会书写符合软件工程规范的文件,编写的程序代码应结构清晰、正确易读,能上机调试并排除错误。

(三)教学时数课堂讲授每周4学时,18周,共72学时。

(四)教学方法本课程将采用课堂讲授及课堂讨论相结合的交互式教学法,同时辅以必要的上机操作实践。

(五)面向专业计算机科学与技术专业。

二、教学内容第一章绪论(一)教学目的要求介绍数据结构的一些基本概念,算法的时间复杂度和空间复杂度的分析方法,抽象数据类型的定义和使用以及算法的描述方法。

掌握数据结构的一些基本概念,掌握算法的时间复杂度和空间复杂度的分析方法,了解抽象数据类型的定义和使用,了解算法的描述方法。

(二)教学内容主要内容:数据结构的一些基本概念:数据、数据元素、数据逻辑结构、数据存储结构、数据类型、算法等。

抽象数据类型。

算法时间复杂度和空间复杂度的分析。

教学重点:有关数据结构的各个名词和术语的含义,以及语句频度和时间复杂度、空间复杂度的估算。

教学难点:算法时间复杂度和空间复杂度的分析。

第一节什么是数据结构一、非数值计算二、数据结构课程内容的历史演变三、数据结构研究范围第二节基本概念和术语一、数据二、数据结构三、数据类型四、抽象数据类型五、多型数据类型第三节抽象数据类型的表示与实现一、固有数据类型二、数据抽象三、抽象数据类型的描述语言第四节算法和算法分析一、算法二、算法设计的要求三、算法效率的度量四、算法的存储空间需求(三)教学方法与形式课堂讲授、多媒体课件。

《算法与数据结构》教学大纲

《算法与数据结构》教学大纲

《算法与数据结构》教学大纲算法和数据结构是计算机科学中最基础、最重要的两门课程之一、它们对于计算机科学专业的学生来说至关重要,因为它们提供了解决问题的方法和工具。

本文将为大家介绍一份《算法与数据结构》教学大纲。

一、课程概述本课程旨在教授学生算法和数据结构的基本概念、原理和实践应用。

通过本课程的学习,学生将掌握常见的算法和数据结构,并能够分析和解决实际问题。

二、教学目标1.理解算法和数据结构的基本概念和原理;2.掌握常见的算法和数据结构的实现和应用;3.能够分析和解决实际问题,选择合适的算法和数据结构;4.培养学生的编程思维和解决问题的能力。

三、教学内容1.算法分析-时间复杂度和空间复杂度-最坏情况、平均情况和最好情况分析-渐进符号表示法-递归和迭代算法2.基本数据结构-数组和链表-栈和队列-树和二叉树-图3.排序和算法-冒泡排序、插入排序和选择排序-快速排序、归并排序和堆排序-二分查找和哈希查找4.图算法-图的表示和遍历- 最短路径算法:Dijkstra算法和Floyd算法- 最小生成树算法:Prim算法和Kruskal算法5.动态规划-基本概念和原理-最优子结构、重叠子问题和状态转移方程-0/1背包问题和最长公共子序列问题四、教学方法1.理论授课:讲解算法和数据结构的基本概念、原理和应用;2.实践演练:编写代码实现常见的算法和数据结构,并进行调试和优化;3.课堂讨论:分析和解决实际问题,讨论选择合适的算法和数据结构的思路和方法;4.作业和实验:布置相关的作业和实验,巩固知识点和培养解决问题的能力。

五、考核方式1.平时成绩:包括课堂表现、作业和实验成绩;2.课程设计:设计和实现一个较为复杂的算法和数据结构;3.期末考试:综合考察学生对课程内容的理解和应用能力。

六、教材和参考资料1.主教材:《算法导论》2.辅助教材:《数据结构与算法分析》、《算法设计与分析基础》3.参考资料:相关的学术论文和在线资料以上就是《算法与数据结构》教学大纲的内容,通过本课程的学习,学生将能够掌握算法和数据结构的基本知识和应用方法,为日后的学习和工作打下坚实的基础。

《数据结构与算法》教学大纲

《数据结构与算法》教学大纲

《数据结构与算法》课程教学大纲一、课程简介及教学基本要求《数据结构与算法》是计算机程序设计的重要理论基础,是计算机相关专业的核心专业基础课程,针对我校计算机学院大学二年级学生开设,它前承高级语言程序设计和高等数学,后接操作系统、编译原理、数据库原理、人工智能等专业课程。

程序设计就像搭积木,数据结构是零件,而算法则是设计图纸。

高效运行且节约存储空间的程序,取决于数据结构和算法的设计。

课程的学习效果不仅关系到后续课程的学习,而且直接关系到软件设计水平的提高和专业素质的培养,在计算机学科教育中有非常重要的作用。

本课程将按照“线性结构,树型结构,图形结构,集合结构”四大模块循序渐进展开,重点学习线性表、字符串、栈和队列、树和二叉树、图以及集合在计算机上的存储和处理。

课程采用“线下+线上”“课程+思政”“理论+实践”六位一体,“课前导学→理论精讲→小组实验→闯关训练→实践扩展→答疑反馈”六阶递进的混合教学模式。

二、课程教学目标通过本课程的学习,使学生掌握数据结构的基本理论与知识,算法设计与分析的基本方法与技巧,培养学生分析和解决实际问题的能力,并为其开展计算机学科应用奠定数据结构与算法方面的基础。

通过解决工程问题,践行学术道德教育,增强学生软件岗位职业道德和团队合作意识,理论联系实际、精益求精的工作态度以及勇于开拓的创新精神。

具体目标如下:目标1.理解数据结构和算法的基本概念。

掌握常用基本数据结构的逻辑特征、存储表示和基本运算。

掌握常用查找和排序算法,并能够分析不同算法的适用场景。

目标2. 具备初步的算法分析能力,会计算算法的时间、空间复杂度。

目标3. 提升分析解决问题的能力,学会分析数据对象的特性,选择(应用)有效的数据结构,设计合适的算法,并编写和调试程序。

目标4. 培养软件岗位职业道德和团队合作意识,理论联系实际、精益求精的工作态度以及勇于开拓的创新精神。

注:课程贡献度用标志表示(“H”表示“高”,“M”表示“中”,“L”表示“低”)三、教学内容与教学方法第一章绪论【课程内容】数据结构与算法课程主要研究非数值计算的现实问题中的数据在计算机中表示、存取和处理。

《算法与数据结构》大纲

《算法与数据结构》大纲

理科计算机主干基础课《算法与数据结构》教学大纲一、课程目的和要求:《算法与数据结构》是理科非计算机专业的一门重要的计算机必修课,是一门理论和实际紧密结合的课程。

本课的主要目的是使学生较全面地理解算法和数据结构的概念、掌握各种数据结构与算法的实现方式,比较不同数据结构和算法的特点。

通过学习,使学生能够提高用计算机解决实际问题的能力。

二、先修课本课程要求学生已学过“计算概论”课程,掌握了程序设计语言C的基本知识,并且有了一些使用C语言进行程序设计的实际经验。

三、单元和学时安排1 概论(3学时)算法的概念,算法的分析数据结构的概念、数据结构的分类本课程要讨论的基本问题2 线性表(6学时)线性表结构,线性表的顺序存储实现(顺序表),线性表的链接实现(链接表),线性表的应用3 字符串(4学时)字符串,字符串的基本操作,模式匹配问题,字符串的应用4 堆栈与队列(5学时)堆栈的概念,堆栈的实现,堆栈的应用,队列的概念,队列的实现,队列的应用5.树与二叉树(6学时)树结构的概念,树的逻辑结构二叉树的概念,完全二叉树与满二叉树树、树林和二叉树的相互转换树和二叉树的实现树和二叉树的各种遍历算法Huffman树的概念及应用6 检索与字典(6-9学时)检索问题与字典静态字典与动态字典顺序检索,二分检索分块检索*,最佳二叉排序树*散列表、散列函数的基本概念,散列函数的选择,碰撞的处理方法,基于属性的检索方法*,倒排表与多重表*。

平衡二叉排序树*,B树与B+树*7 排序(3~5学时)排序的基本概念选择排序,插入排序、冒泡排序、快速排序Shell排序*、堆排序*、归并排序*、基数排序*各种排序算法的复杂性分析8 图结构(4~7学时)图的基本概念及有关术语图的存储表示法图遍历、最小生成树最短路径拓扑排序*关键路径*9 算法分析与设计(2~3学时)算法分析技术算法设计技术:分治法、贪心法、动态规划法、回溯法四、上机实践1. 在课程的前12周,学生应当完成一批程序设计作业,主要内容为一些典型数据结构的实现和应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教学大纲1 教学目的一些著名的计算机科学家在有关计算机科学教育的论述中认为,计算机科学是一种创造性思维活动,其教育必须面向设计。

算法与数据结构正是一门面向设计,且处于计算机学科核心地位的教育课程。

通过对算法与数据结构的系统学习与研究,理解和掌握算法设计的主要方法,培养对算法的计算复杂性进行正确分析的能力,为独立地设计算法和对给定算法进行复杂性分析奠定坚实的理论基础,对从事计算机系统结构、系统软件和应用软件研究与开发的科技工作者是非常重要和必不可少的。

计算机科学与技术专业的人员应该具有4种基本的专业能力:计算思维能力,算法设计与分析能力,程序设计和实现能力,计算机软硬件系统的认知,分析,设计与应用能力。

本课程着重于培养学生的算法设计与分析能力,程序设计和实现能力。

2 教学内容的结构模块以教育部计算机科学与技术教学指导委员会发布的“高等学校计算机科学与技术本科专业规范”为依据,以基本数据结构为知识单元,包括引论、表、栈、队列、排序与选择、树、图、集合、符号表、字典、优先队列、并查集共十二章节。

2.1 课堂教学大纲(共计52学时)第1章引论(4学时)知识点:本章介绍算法的基本概念、表达算法的抽象机制以及算法的计算复杂性概念和分析方法。

简要阐述数据类型、数据结构和抽象数据类型的基本概念以及这3个重要概念的区别和内在联系。

最后简要概述C语言的若干重要特性和采用C与自然语言相结合的方式描述算法的方法。

本章内容是后续各章叙述算法和描述数据结构的基础和准备。

重点:• 理解算法的概念。

• 理解什么是程序,程序与算法的区别和内在联系。

• 能够列举求解问题的基本步骤。

• 掌握算法在最坏情况、最好情况和平均情况下的计算复杂性概念。

• 掌握算法复杂性的渐近性态的数学表述。

• 了解表达算法的抽象机制。

• 熟悉抽象数据类型的基本概念。

• 熟悉数据类型和数据结构的概念。

• 理解数据结构、数据类型和抽象数据类型三者的区别和联系。

• 掌握用C语言描述算法与数据结构的方法。

难点:掌握用C语言描述算法与数据结构的方法第2章表(4学时)知识点:本章介绍抽象数据类型表的基本概念及其逻辑特征。

简要阐述实现抽象数据类型的一般步骤。

按照抽象数据类型设计和实现的一般性原则,详细介绍实践中常用的实现表的方法,如用数组实现表的方法、用指针实现表的方法、用间接寻址技术实现表的方法、用游标实现表的方法、单循环链表和双链表以及表的搜索游标的实现方法和步骤。

重点:• 理解表是由同一类型的元素组成的有限序列的概念。

• 熟悉定义在抽象数据类型表上的基本运算。

• 掌握实现抽象数据类型的一般步骤。

• 掌握用数组实现表的步骤和方法。

• 掌握用指针实现表的步骤和方法。

• 掌握用间接寻址技术实现表的步骤和方法。

• 掌握用游标实现表的步骤和方法。

• 掌握单循环链表的实现方法和步骤。

• 掌握双链表的实现方法和步骤。

• 熟悉表的搜索游标的概念和实现方法。

难点:掌握用数组实现表的步骤和方法、掌握用指针实现表的步骤和方法。

第3章栈(3学时)知识点:本章介绍抽象数据类型栈的基本概念及其逻辑特征。

按照抽象数据类型设计和实现的一般性原则,详细介绍实践中常用的用数组实现栈的方法和用指针实现栈的方法。

最后以集合的等价类划分问题为例讨论栈的应用方法。

本章介绍的抽象数据类型栈在后续各章中还会反复用到。

重点:• 理解栈是满足LIFO存取原则的表。

• 熟悉定义在抽象数据类型栈上的基本运算。

• 掌握用数组实现栈的步骤和方法。

• 掌握用指针实现栈的步骤和方法。

• 理解用栈解决实际问题的方法。

难点:用栈解决实际问题的方法。

第4章队列(3学时)知识点:本章介绍抽象数据类型队列的基本概念及其逻辑特征。

按照抽象数据类型设计和实现的一般性原则,详细介绍实践中常用的用指针实现队列的方法和用循环数组实现队列的方法。

最后以电路布线问题为例讨论队列的应用方法。

本章介绍的抽象数据类型队列在后续各章中还会反复用到。

重点:• 理解队列是满足FIFO存取原则的表。

• 熟悉定义在抽象数据类型队列上的基本运算。

• 掌握用指针实现队列的步骤和方法。

• 掌握用循环数组实现队列的步骤和方法。

• 理解用队列解决实际问题的方法。

难点:用队列解决实际问题的方法。

第5章排序与选择(6学时)知识点:本章讲授的主题是排序算法。

在明确了排序问题的提法及其实质后,介绍在实践中常用的简单排序算法,如冒泡排序算法、插入排序算法和选择排序算法的设计思想与分析方法。

快速排序算法是一个效率高且实用性强的排序算法。

本章用较大篇幅介绍快速排序算法的基本设计思想及其多方面的改进,借此展示算法设计中精益求精的设计思想和策略。

合并排序算法是另一个用分治和递归策略设计算法的经典例子。

本章对合并排序算法也展开深入细致的讨论。

计数排序算法和桶排序算法是2个典型的线性时间排序算法。

本章通过对这2个算法的讨论阐述线性时间排序算法的设计思想与分析方法,并进一步讨论线性时间排序算法与基于比较的排序算法的主要差别和适用范围。

本章还介绍与排序问题类似的选择问题及相应的算法。

从平均情况和最坏情况2个不同侧面研究算法的设计思想及实现方法。

重点:• 理解排序问题的实质。

• 掌握简单排序算法的设计思想与分析方法。

• 掌握快速排序算法的设计思想与分析方法。

• 理解随机化思想在快速排序算法中的应用。

• 掌握合并排序算法的基本思想及实现方法。

• 掌握计数排序算法的设计思想与分析方法。

•掌握桶排序算法的设计思想与分析方法。

• 理解线性时间排序与基于比较排序算法的主要差别和适用范围。

• 掌握平均情况下线性时间选择算法的设计思想与分析方法。

• 掌握最坏情况下线性时间选择算法的设计思想与分析方法。

难点:理解线性时间排序与基于比较排序算法的主要差别和适用范围第6章树(6学时)知识点:本章主要讲授常用的非线性层次结构树以及作为抽象数据类型的树的一般操作和一些常用的表示树的数据结构。

在给出树的准确定义后,讨论树的前序遍历、中序遍历和后序遍历方法。

对于一般情况下的树结构,介绍实践中常用的树的父结点数组表示法、树的儿子链表表示法和树的左儿子右兄弟表示法。

二叉树是一类非常重要的特殊的树形结构,也是本章内容的重点。

二叉树和ADT 二叉树的概念是本章的核心概念,在后续各章中也反复用到。

二叉树的顺序存储结构、二叉树的结点度表示法和用指针实现二叉树的方法是实现二叉树的3种常见方法。

本章着重讨论用指针实现二叉树的方法。

在此方法的基础上还引伸出线索二叉树结构。

最后以信号传输网络中最优信号增强装置布局问题为例讨论树结构在实际问题中的应用方法。

重点:• 理解树的定义和与树相关的结点、度、路径等术语。

• 理解树是一个非线性层次数据结构。

• 掌握树的前序遍历、中序遍历和后序遍历方法。

• 了解树的父结点数组表示法。

• 了解树的儿子链表表示法。

• 了解树的左儿子右兄弟表示法。

• 理解二叉树和ADT二叉树的概念。

• 了解二叉树的顺序存储结构。

• 了解二叉树的结点度表示法。

• 掌握用指针实现二叉树的方法。

• 理解线索二叉树结构及其适用范围。

难点:用指针实现二叉树的方法第7章图(12学时)知识点:本章讲授实践中常用的表示复杂非线性关系的数据结构图,以及作为抽象数据类型的图的一般操作和表示图的数据结构。

本章着重介绍图的邻接矩阵表示及其实现方法、图的邻接表表示及其实现方法以及图的紧缩邻接表表示方法。

在此基础上讨论遍历一个图的2个重要方法,即图的深度优先搜索和广度优先搜索算法。

对于实际应用中常遇到的最短路问题,本章详细叙述单源最短路径问题的Dijkstra算法和Bellman-Ford算法以及所有顶点对之间最短路径问题的Floyd算法。

最小支撑树问题是另一个经典的图论问题。

本章讨论构造最小支撑树的Prim算法和Kruskal算法。

讨论了无圈有向图DAG的拓扑排序及其最短路径和最长路径的求法。

最后介绍二分图的概念及其相关的图匹配问题,并讨论最大匹配问题的增广路径算法。

重点:• 理解图的定义和与图相关的有向图、无向图、赋权图、连通图等术语。

• 理解图是一个表示复杂非线性关系的数据结构。

• 掌握图的邻接矩阵表示及其实现方法。

• 掌握图的邻接表表示及其实现方法。

• 了解图的紧缩邻接表表示方法。

• 掌握图的广度优先搜索方法。

• 掌握图的深度优先搜索方法。

• 掌握单源最短路径问题的Dijkstra算法。

• 掌握带负权边的无向图的Bellman-Ford算法。

• 掌握所有顶点对之间最短路径问题的Floyd算法。

• 掌握无圈有向图DAG的拓扑排序算法。

• 掌握求DAG的最短路径、最长路径及所有顶点对之间的最短路径的算法。

• 掌握构造最小支撑树的Prim算法。

• 掌握构造最小支撑树的Kruskal算法。

• 理解图的最大匹配问题的增广路径算法。

难点:• 掌握单源最短路径问题的Dijkstra算法。

• 掌握带负权边的无向图的Bellman-Ford算法。

• 掌握所有顶点对之间最短路径问题的Floyd算法。

• 掌握构造最小支撑树的Prim算法。

• 掌握构造最小支撑树的Kruskal算法。

• 理解图的最大匹配问题的增广路径算法。

第8章集合(2学时)知识点:本章讲授的主题是集合和以集合为基础的抽象数据类型,并介绍了如何用位向量和链表两种方式实现集合。

重点:• 理解集合的概念。

• 理解以集合为基础的抽象数据类型。

• 掌握用位向量实现集合的方法。

• 掌握用链表实现集合的方法。

难点:掌握用位向量实现集合的方法。

第9章符号表(2学时)知识点:本章讲授了符号表的概念以及用数组、开散列、闭散列三种实现符号表的方法。

同时介绍了多种常用的散列函数构造方法,如:除余法、数乘法、平方取中法等以及主要的几种解决冲突的方法,如:线性探测法、二次探测法等。

重点:• 理解抽象数据类型符号表的概念。

• 掌握数组实现符号表的方法。

• 理解开散列和闭散列的概念。

• 掌握用开散列表实现符号表的方法。

• 掌握除余法、数乘法、平方取中法、基数转换法和随机数法等散列函数构造方法。

• 掌握采用线性重新散列技术的闭散列表实现符号表的方法。

难点:• 掌握用开散列表实现符号表的方法。

• 掌握采用线性重新散列技术的闭散列表实现符号表的方法。

第10章字典(4学时)知识点:本章介绍了字典的概念,用数组和二叉搜索树实现字典的方法,另外,在此基础上讲授了AVL树的概念及相关运算。

重点:• 理解以有序集为基础的抽象数据类型字典。

• 理解用数组实现字典的方法。

• 理解二叉搜索树的概念和实现方法。

• 掌握用二叉搜索树实现字典的方法。

• 理解AVL树的定义和性质。

• 掌握二叉搜索树的结点旋转变换及实现方法。

• 掌握AVL树的插入重新平衡运算及实现方法。

• 掌握AVL树的删除重新平衡运算及实现方法。

相关文档
最新文档