数据结构与算法周口师范学院

我们生活的现实世界中所有物质都可以抽象为数字、文字、声音、图像和视频,这些数据存储在计算机中,构成了信息世界,经过处理后又服务于我们社会生活的方方面面。

人们利用计算机的目的是解决实际的应用问题。数据结构与算法的研究涉及构筑计算机求解问题过程的两大基石:一是刻画实际问题中信息及其关系的数据结构,二是描述问题解决方案的算法。所以说“数据结构与算法”这门课程是计算机专业课程的核心。

作为学科的专业基础核心课程,《数据结构与算法》对应于学科中问题求解的理论、抽象和设计的方法论,在学科知识体系中具有核心的重要位置。它既是对以往课程的深入和扩展,也为深入地学习其他专业课程打下基础,课程中涉及到的基本的线性结构、树、图等数据结构和查找、排序算法,是计算机科学的基本功。B+树、散列(Hash)等高级数据结构,也是数据库、操作系统、编译原理、计算机网络等重要专业课程的基础。本课程在计算机学科中与其他课程的关系如图1所示。

掌握“数据结构”中的基本概念、合理组织数据的基本方法、高效处理数据的基本算法、常用的经典算法、通用的程序设计技术,以及面对实际问题时选择恰当数据结构并设计高效算法的能力,培养学生用计算思维分析问题的能力,提高学生上机解决较大规模实际问题的能力,为进一步的软件开发打下坚实的基础。

1.课程体系

课程突出数据组织方法与实现技术构成,慕课约30个学时,由基本概念、基本结构(线性、树、图)和基本技术(查找、排序)三大部分组成。基本概念部分重点讲述数据结构定义、内容、方法、评价以及前续基础与课程要求,明确数据结构是什么、学什么、怎么学数据结构。基本结构部分重点讲述线性结构、树、图的逻辑结构、存储结构及其加工处理基本算法。基本技术部分包括查找和排序两类经典技术,贯穿了参数传递、指针处理技术、数组应用、递归与队列等重要的程序设计技术;力求表现经典算法思路,为学习者继续展拓提供线索。M课视频每讲均附有小结,每章均有典型题例,便于总结提高。

2.课程特点

《数据结构与算法》的学习过程是进行复杂程序设计的训练过程。技能培养的重要程度不亚于知识传授。难点在于让学生理解、习惯、掌握构造思维算法方式。针对《数据结构与算法》技术性与综合性较突出的特点,实施了“指导—大运动量实践—反馈”教学法。通过作业练习、课堂练习、课程实习、课程设计实践过程,促进了学生逻辑抽象能力的培养。

3.资源特色

建设了支撑教学过程与自主学习两个面向的立体化教学资源,配备多媒体课件、讲义、书中各算法的实现代码及动画演示等资源支撑教学过程。

面向教学过程资源:与课程内容特点相适应的多媒体课件。以动画展现算法的实现过程,便于对抽象算法本质的理解。

面向自主学习扩展的教学资源:涵盖练习测试、同步训练、教学大纲、课堂视频、参考文献、ACM训练等教学资源,促进学生线上线下主动学习,入门提高。

让我们一起进入《数据结构与算法》课程的学习,共同提高计算思维能力。

通过典型数据结构和算法的学习,以及算法设计和实现的训练,养成敏锐的洞察力。并逐步掌握如何整合信息,提炼数据和数据结构,配置相应的运算和处理算法,完成信息化系统的集成。培养“站在计算机角度”思维的意识和建模能力、解模技巧,达到“传承知识、开发智力、培养能力、提高素质”的目的。

如果预修“离散数学”,对计算机处理离散结构的基本理论和方法有较为系统的理解,则对更扎实地掌握本课程内容有很大帮助,但并不是必须的。

这门课的一个重要目的是,帮助大家明白一些经典的数据结构为什么存在、以及在什么情况下可以最好地解决什么样的问题。要做到这一点,非自己动手解决问题不可。

课程过半时,我们将安排一次期中考试,是在线完成的选择、是非或填空题,不包括编程题。期中考试在两周内完成均有效。

最后,在期末后一周,我们会安排一次在线期末考试,需要在某一天内用连续的120分钟完成。

本课程获得证书的资格,由以下因素决定:

此外,若你的期末考试成绩高于期中考试或者无期中成绩,则期末占100%;若你的期末考试成绩低于期中考试,则期中考试占40%,期末考试占60%。

满足条件1并且总评成绩达到60分及以上者,可以获得本课程的合格证书。

1.《数据结构》(C语言版),严蔚敏吴伟民编著,清华大学出版社,2016年1月

2.《数据结构题集》,严蔚敏吴伟民米宁编著,清华大学出版社,2015年11月

3.《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨编著,高等教育出版社,2016年6月

4.《数据结构》(C语言描述(第2版)),耿国华等,高等教育出版社,2015.7

5.《大话数据结构》,程杰,清华大学出版社,2011.6

6.课程练习网站:

Q1:本课程的选课条件是什么?

A:本课程的主要对象是大学本、专科生,但不限于大学生。只要你是计算机编程爱好者、具有基本的C语言程序设计基础,有热情,有决心,就能学好。

Q2:我没有学过C语言,但学过Java、C#或者Python等语言,是否可以选学本课程?

A:Java、C#或者Python等语言的编程思路和C/C++语言是相通的,尽管本课程是主要采用C语言描述算法,但你采用Java、C#或者Python等语言描述算法完全是可以的。

Q3:你的数据结构与算法课程为什么说采用C/C++语言来描述算法?

A:本课程的算法主要采用C语言面向过程方式来描述的。由于纯C语言中调用函数时,只有实参到形参的单向值传递,算法设计不方便简洁,而C++语言中提供了引用运算符(&)可以方便地实现实参和形参的双向传递。这里说采用C/C++语言来描述算法,实际上仅仅使用了C++语言中的引用运算符,其他都是采用纯C语言的知识。

Q4:你的数据结构与算法课程为什么不采用C++面向对象方法来描述算法?

A:采用C++面向对象方法可以更加完美地描述算法,但考虑到绝大部分在校学生学习数据结构与算法课程时,仅仅学习过C语言,还没有学习过C++面向对象程序设计,所以本课程主要采用C语言面向过程方式来描述算法。

Q5:数据结构与算法课程的上机实验采用什么编译器?

A:如果采用C/C++语言描述算法,可以采用VisualC++6.0、DevC++、BorlandC++或者VisualStudio.NET等C/C++语言编译器上机实验。由于算法中采用引用运算符(&),所以不适合采用TurboC2.0(或者更低版本)编译器,除非你将算法采用标准C语言描述,不使用引用运算符(&)。

Q6:数据结构与算法课程和算法设计与分析课程有什么不同和联系?

A:数据结构与算法课程主要学习各种数据结构,其算法设计是围绕各种数据结构展开的。而算法设计与分析课程学习更通用的算法设计方法,即算法策略,如动态规划、贪心法和分支限界法等。

Q7:数据结构与算法课程中讲解哪些数据结构?

A:数据结构课程中讲解的数据结构从逻辑结构上分为线性结构、树形结构和图三类。线性结构包括线性表、栈和队列等,树形结构包括树和二叉树等。

Q8:数据结构中的算法为什么需要用计算机语言描述出来?

A:从理论上讲,算法可以用自然语言、伪码和计算机语言来描述。但一个学习计算机的学生,应该熟练使用计算机语言(如C/C++)来描述算法。从而才能够从计算机的角度来求解问题。

Q9:如何学好数据结构与算法课程?

A:老师传授给你的是知识,而解决问题需要能力,能力是个性化的,只有通过自已的实训才能得到。对于一个对计算机编程感兴趣的学生,只有编写和调试n多的程序,才能获得程序设计的能力,继而具备初步的软件设计和开发基础。只想听几堂课而不进行大量课外研习和上机实践就想获取这种“能力”是不可能的。

THE END
1.计算机常用算法对照表整理文章浏览阅读1.1w次,点赞5次,收藏45次。常用对照:NLPCRF算法: 中文名称条件随机场算法,外文名称conditional random field algorithm,是一种数学算法,是2001年提出的,基于遵循马尔可夫性的概率图模型。全部对照第一部分、计算机算法常用术语中英对照 Data Structures https://blog.csdn.net/HHTNAN/article/details/76130418
2.10大计算机经典算法「建议收藏」腾讯云开发者社区快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率https://cloud.tencent.com/developer/article/2089934
3.计算机算法有哪些编程:算法的定义是常用算法有本资讯是关于编程:算法的定义是常用算法有相关的内容,由技术百科网为您收集整理请点击查看详情https://www.ultimate-communications.com/zh/system_418763
4.计算机视觉传统算法计算机视觉算法有哪些计算机视觉 传统算法 计算机视觉算法有哪些,1-引言在计算机视觉的发展中,我们的任务也越来越复杂,对于一张图像,我们不仅要实现对于目标的分类问题,还要准确的定位目标所在图片的位置,这个就是目标检测技术。在基于深度学习的目标检测技术中,就不得不提到最著名的三个https://blog.51cto.com/u_16099165/7583044
5.计算机基础知识算法:是指解题方案准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。 特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可https://www.oh100.com/kaoshi/yingjian/321869.html
6.自动驾驶领域有哪些岗位可选?汽车行业资讯自动驾驶感知部分是自动驾驶目前最有挑战的部分,其目前的岗位包括:机器学习算法工程师、计算机视觉算法工程师和自然语言处理算法工程师。(这三个方向也属于人工智能的三大方向。) 在自动驾驶车辆中,主要包括:车道线检测、车辆等障碍物检测、可行驶区域检测、红绿灯等交通信息检测、车内语音识别等等,前面讲的SLAM算法其实https://www.auto-testing.net/news/show-109728.html
7.算法概述2、借助有关变量或参数对算法加以表述; 3、将解决问题的过程划分为若干步骤; 4、用简练的语言将这个步骤表示出来. 计算机中算法可分为如下两大类: (1)数值运算算法:求解数值。 (2)非数值运算算法:事务管理领域。 图灵机Turing-machine 英国数学家图灵提出的计算模型, 一个两端无限长的由小格子组成的带子,每个格https://www.jianshu.com/p/8c8d20a9bde8
8.韩信竟是数学大师?中国古代数学启发计算机加密算法晓查 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 没想到,古代韩信点兵的传说,后来竟然启发了计算机加密算法。△韩信是左边那位,不是右边的 相传,https://www.thepaper.cn/newsDetail_forward_14592114
9.研究生个人年终总结(精选14篇)(5)算法设计与分析 计算机专业的重量级必修课,授课老师韩军教授水平很高,澳大利亚邦德大学毕业的,讲课生动有趣,参考书就用的王晓东的《计算机算法设计与分析》。还是按照分治算法、动态规划、分支定界、贪心算法、随机算法、np理论这一套讲下来,也算是又复习了一遍。 https://www.jy135.com/nianzhongzongjie/1358295.html
10.计算机按算法分类有哪些计算机按算法分类有哪些收敛野心 精选回答 算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。算法可以宏泛的分为三类: 1、有限的,确定性算法,这类算法在有限的一段时间内https://edu.iask.sina.com.cn/jy/3pQnxRFSfrf.html
11.一些超实用的JS常用算法详解(推荐!)javascript技巧一些超实用的JS常用算法详解(推荐!)更新时间:2022年10月24日 09:38:17 作者:CRMEB 算法是计算机算法即计算机能够执行的算法,只有明确了算法后,才能使应用程序实现某些功能,所以通常人们会将算法称为程序的灵魂,下面这篇文章主要给大家分享介绍了一些超实用的JS常用算法的相关资料,需要的朋友可以参考下https://www.jb51.net/article/265742.htm
12.Alibaba最新1000多道Java面试题汇总详解,收藏起来慢慢刷!我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝https://maimai.cn/article/detail?fid=1728969401&efid=esjJLvGGL4fAr1LArgq_cQ
13.设计,算法系列,计算机类,设计模式,软件测试,重构优化,等更多分类Hadoop,HeadFirst,Java,Javascript,jvm,Kafka,Linux,Maven,MongoDB,MyBatis,MySQL,Netty,Nginx,Python,RabbitMQ,Redis,Scala,Solr,Spark,Spring,SpringBoot,SpringCloud,TCPIP,Tomcat,Zookeeper,人工智能,大数据类,并发编程,数据库类,数据挖掘,新面试题,架构设计,算法系列,计算机类,设计模式,软件测试,重构优化,等更多https://github.com/congtong/pdf