算法的底层实现、xx算法的设计、运用

来源:1-1 欢迎大家来到算法与数据结构的世界

慕村9469909

2020-08-31 15:50:04

我想问一下老师。

算法的底层实现:包括 动态规划 贪心算法等底层实现吗?

算法的设计:有什么好的推荐书籍或者课程吗 ?学习了当前课程 (理解透彻的情况下),是否能达到 在面试过程中。面试官 问一个没有听说过的数据结构(算法)。你让他解释一下 这数据结构(算法)有那些点。主要是做啥的等。能够运用所学知识 告诉他 我能利用XXX 设计出来一个 与相识度极高的数据结构(算法)来替代他。
这主要就是设计思想 也是本课程的目标了。

算法的运用:主要就是刷题了。

简而言之当前传授的是 算法的设计思想 并没有过多的介绍如何实现XX算法。 运用还是的刷

写回答

1回答

liuyubobobo

2020-09-01

其实我没有特别理解你的问题。我只能捡你的问号来回答。


1)

算法的底层实现:包括 动态规划 贪心算法等底层实现吗?


一般其实没有“动态规划,贪心算法的底层实现”这个概念。我们可以说数据库的底层实现,操作系统的底层实现,或者某个具体的算法,比如快速排序的底层实现,或者某个具体数据结构,比如红黑树的底层实现。

但是,动态规划,贪心算法,他们不是具体的算法,他们是算法思想,是解决问题的思路,而不是一个具体的东西。

这有点儿像说,我可以给出一个根号2是无理数的具体证明,但无法给出一个反证法的具体证明。因为反证法是一个证明的思想,而不是一个具体的数学定理。


这个课程不包含对动态规划,贪心算法这些算法思想的讲解,只包括经典算法和数据结构的底层实现。通常,学习这些经典的算法和数据结构的底层实现,是进一步学习算法设计思想的基础。在近乎世界上所有的计算机专业的培养体系中,也是这么设计的。在我上学的时候,算法设计是大三才学习的;这些经典的算法和数据结构的原理,是大二学习。


如果对这些算法设计思想的应用感兴趣,现阶段可以参考我的《玩转算法面试》:https://coding.imooc.com/class/82.html  。以后我可能会针对这个问题再出一个体系大课。只是暂定,还没有签合同,不能肯定。


2)算法的设计:有什么好的推荐书籍或者课程吗 ?

参考我这篇公众号文章的算法部分:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247485792&idx=1&sn=d60b5c9b1a505b96abb283a95871a9ae&chksm=fd8ca626cafb2f30494c235cb84ef7b2d251f6fc590457790135cd460fb43a574042d5b167dd&token=924591048&lang=zh_CN#rd


3)设计出来一个 与相识度极高的数据结构(算法)来替代它?

可能能,可能不能。

因为数据结构是一个太广阔的领域。在力扣上的设计问题,都是在理解了基础的算法和数据结构的基础上,可以解决的。但是很多数据结构没有那么简单。或者你可能需要更深入的学习更多算法和数据结构领域的知识,来融会贯通。单单说数据结构,我不用太思考,就能说出5,6个这个课程中不包含的内容。有一些内容我也会在课程内容最州的扩展小节提及,以让大家如果感兴趣去自学,有一个方向。


实际上,我认为学习这个课程的主要目的是:

1)了解经典的算法和数据结构,以便于在解决问题的时候,知道使用何种算法或者数据结构来解决;

2)通过对经典的算法和数据结构的学习,进一步对编程有更深刻的理解。比如程序逻辑的组建;递归;便捷的确定;测试;等等。

3)只有了解了这些算法和数据结构,才能更进一步去理解计算机专业更具体的领域。

比如操作系统大量应用算法和数据结构,比如任务调度就需要优先队列,你需要先了解什么是优先队列;

比如图形学大量使用四叉树八叉树管理场景,你要了解什么是树结构,树结构的基础操作是怎样的,才能进一步学习图形学中是怎么运用他们的;

比如编译原理大量使用字符串匹配算法,你需要先了解这些算法,才能进一步理解在编译原理中是如何运用这些算法搭建更高层的算法,或者解决具体问题的;

比如网络中大量使用图算法(因为网络拓扑本身就是一个图),你需要先了解图算法,才能进一步学习网络里在怎么运用他们;

等等等。这就是算法和数据结构是计算机专业的基础的原因。不是每一个人都要成为算法设计大师,但只有打下这些基础,才能学习更深入的计算机领域的知识。


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2602 学习 · 1086 问题

查看课程