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

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

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

作为学科的专业基础核心课程,《数据结构与算法》对应于学科中问题求解的理论、抽象和设计的方法论,在学科知识体系中具有核心的重要位置。它既是对以往课程的深入和扩展,也为深入地学习其他专业课程打下基础,课程中涉及到的基本的线性结构、树、图等数据结构和查找、排序算法,是计算机科学的基本功。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.LeetCode刷题秘籍,关于数据结构与算法,看一这篇就够了但是直至今日,大家会发现面试的门槛越来越高,甚至来说去到一些大公司去面试算法与数据结构的题目已经成为必问了,算法的在面试的占比已经越来越高,在此我整理了一下近几年面试中问的比较频繁的算法题,大家感兴趣的可以看看,看自己能答出来多少。 寻找数组的中心索引 数组中某一个下标,左右两边的元素之后相等,该https://baijiahao.baidu.com/s?id=1729521878669986641&wfr=spider&for=pc
2.数据结构与算法排序算法能够解决的问题?算法需要和数据结构、数据体现结合使用,排序算法能够解决的问题包括:数据排序、重复元素查找、数据查找、优先队列(堆排序)、中位数以及其他运筹学算法等。排序算法如何选择?因为不同的… 阅读全文? 不稳定排序算法 常用排序算法?稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。也就https://www.zhihu.com/column/c_1281007643813945344
3.背诵拿分数据结构必背算法10关注启航不迷路 欢迎推荐给更多考研人 撰稿:政哥 责编:旺仔 部分素材来源网络,侵删 【背诵拿分】数据结构必背算法09 【背诵拿分】数据结构必背算法08 【背诵拿分】数据结构必背算法07 【背诵拿分】数据结构必背算法06 【背诵拿分】数据结构必背算法05https://mp.weixin.qq.com/s?__biz=MzU3OTY1ODMwMw==&mid=2247493055&idx=3&sn=abce454239eb3a8bbb1dbfb9a72ba762&chksm=fd6012efca179bf94dc98c76ee6007368c6293a12e93a30b87222f4636bde639a75be08f2395&scene=27
4.如何学好数据结构与算法本文介绍了如何系统学习数据结构与算法,包括设定学习目标、制定学习路线,强调理解原理、动手实践和持续学习的重要性,并推荐了浙江大学和清华大学的课程及经典书籍作为学习资源。 摘要由CSDN通过智能技术生成 学习数据结构与算法是计算机科学中至关重要的一部分。让我们一起探讨如何系统地学习这些知识。 https://blog.csdn.net/Aoqun/article/details/136297234
5.如何抓住重点,系统高效地学习数据结构与算法?想要学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。 这个概念究竟有多重要呢?可以这么说,它几乎占了数据结构和算法这门课的半壁江山,是数据结构和算法学习的精髓。 数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就https://www.imooc.com/article/332964
6.什么是数据结构?什么是算法?怎么学习数据结构与算法?学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。 本文将回顾数据结构与算法的基础知识,学习日常所接触场景中的一些算法和策https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
7.学数据结构与算法用什么软件mob64ca12ecb6c5的技术博客如何学习数据结构与算法 作为一名经验丰富的开发者,我愿意分享一下如何学习数据结构与算法的方法。首先,我们需要明确整个学习过程的流程,然后逐步指导小白如何实现这一目标。 学习流程 选择学习资料安装IDE选择编程语言编写代码学习数据结构学习算法 学习步骤 选择学习资料 https://blog.51cto.com/u_16213416/10690285
8.《算法与数据结构》精品课:线上线下融合,师生协力共创编程教学新3.理论与实践结合:算法与数据结构是实践性很强的课程,需要通过编写代码来实现和应用所学的算法和数据结构。 4.坚持和持续学习:学习算法与数据结构,你会发现后面几乎所有计算机相关的专业课都能用到,所以你会遇到更多有挑战的算法问题等着你破解。 课程体会: https://sist.shanghaitech.edu.cn/_t335/2023/1205/c2858a1086548/page.htm
9.数据结构与算法之美(豆瓣)"数据结构与算法之美"试读· ··· 两年前,作者发布了一个关于数据结构和算法的网络教程,到目前为止,已经有 10 万多名读者订阅。该教程获得了很好的口碑,几乎“零差评”,甚至掀起了学习数据结构和算法的热潮。很多人因为这个网络教程开始学习数据结构和算法,也因此爱上了算法学习。之后,人民邮电出版社的编辑通过https://book.douban.com/subject/35474931/
10.《数据结构与算法》课程设计的心得体会(精选12篇)为了克服这些不足,使学生真正能把理论知识灵活运用到实践当中,我们开设了《数据结构与算法》课程综合性、设计性实验项目并立项进行实践研究,通过两三年的实践,取得了一些经验和成果,学生的实践能力也有了较大提高。 二、综合性、设计性实验项目的实践环节 1.实验项目的选择。 通过《数据结构与算法》课程的学习和前期https://www.360wenmi.com/f/filep4ynnltw.html
11.这些算法可视化网站助你轻松学算法腾讯云开发者社区无疑,数据结构与算法学习最大的难点之一就是如何在脑中形象化其抽象的逻辑步骤。而图像在很多时候能够大大帮助我们理解其对应的抽象化的东西,而如果这个图像还是我们自己一点点画出来的,那么无疑这个印象是最深刻的了。没错,今天给大家分享的就是算法可视化的网站。 https://cloud.tencent.com/developer/article/1462038
12.如何学习数据结构与算法?(加油,你可以的)jaiodfjiaodf如何学习数据结构与算法? (加油,你可以的) 精通一个领域(数据结构与算法) Chunk it up 切碎知识点 数据结构(https://naotu.baidu.com/file/b832f043e2ead159d584cca4efb19703?token=7a6a56eb2630548c) 庖丁解牛 把数据结构的一个又一个知识点分解开来https://www.cnblogs.com/ssaylo/p/12676845.html
13.数据结构和算法—动态规划数据结构和算法—动态规划 我一直最想做的就是机器学习,所以也都是在报机器学习的岗位,在BAT三家公司中,其实还是要讲百度吧,因为阿里在一面的时候就挂了,给我的理由是我投错了岗位(据面试官讲我应该去投算法岗,但我投的是数据挖掘),后来我在想,其实还就是我没能达到她的语气要求;腾讯就别讲了,连面试都没https://www.cda.cn/view/20622.html
14.如何学习数据结构和算法在与Codecademy的电话中,他们说:“别担心,不会问疯狂的算法问题或类似的问题。于是我认为这意味着我根本不需要学习算法。 在现场面试中,我遇到了两轮算法问题,事后看来都是非常基础的算法题。我记得其中一个是问我如何在网格中从A点穿越到B点。我完全不知道该怎么做,所以我只能瞎蒙了。我聚焦在一个无限的while循https://www.jianshu.com/p/8231f94121c1