对于学习算法的困惑
来源:2-5 插入排序法 - Insertion Sort
LexieMIZUKI
2019-08-16
请问老师,我感觉我学这个课程很吃力,我应该怎么掌握它呢?我很想学号算法,但是我感觉首先理解一个算法就很难了,还要写代码,真的完全没有思路,即使是跟着老师的思路走,把视频代码自己打一遍,感觉没什么用,还是没有印象,另外我是学java的,所以c++不怎么会,老师每次讲的时候,我就硬着头皮把c++打一遍,然后再到老师的那个库里,找到java代码,把java打一遍;
所以对于像我这样学得吃力的同学,你有什么建议或好的学习方法吗?还有我想问算法写成代码有什么意义吗,可以解决我们身边最常见的什么问题呢(如果是很难的那种比如淘宝上的推荐功能的那种算法,这个肯定超级难,怎么和这些课上的东西联系起来呢,感觉差十万八千里)?
3回答
-
liuyubobobo
2019-08-16
首先回答你算法有什么用这个问题。答案全都在我的公众号文章:《学算法有什么用?没用》里了。传送门:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483901&idx=1&sn=c6a6e50354f1abbf2109b1d62bcf5237&chksm=fd8caebbcafb27adca8478a851f9ddf82623ba0175dbca3921f9f3cd1df6e431113967baf88b&token=1499787139&lang=zh_CN#rd
简单来说,真正的作用是,这些内容,是进一步学习操作系统,编译原理,数据库原理,包括你说的推荐系统,人工智能等等的基石。这些知识掌握不好,近乎没法学习计算机科学更深一步的内容。但是,如果你的工作不做这些内容,算法真的越来越没用了。
公允的说,对于大部分同学来说,学算法的主要目的是应付面试。
==========
怎么看到这些更复杂的内容和课程内容联系起来?如果你有这个疑问,我理解,你学算法的目的不是面试。
那么,我的建议是,直接去看更深层次,你真正想学的内容。比如操作系统,比如人工智能,比如编译原理,比如 android 的源码分析。我的经验,一接触这些东西,马上就会接触大量的算法和数据结构的应用,你就理解算法有什么用了。不然,我给你举再多的例子,你还是觉得没用。当然,如果你直接去接触你真正想学的内容,发现不需要用什么算法和数据结构,那也是好事儿,你节省了很多时间,直接学到了自己想学的东西。
其实,我建议所有同学学习机器学习也是这样的。我建议大家直接去学机器学习,不要补数学。一学机器学习,就能马上接触到,高数线数概率论中的知识是怎样被运用的,也马上就明白哪些数学有用,有什么用,再回去补数学,目标性更强,事半功倍。
==========
最后说学习方法的问题。
首先,建议你看一遍我的另一篇公号文章《高效学习的秘密》,传送门:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483836&idx=1&sn=90854aa76507281403e4dd9cd434a12b&chksm=fd8caefacafb27ec78f999fde4f1217c04c6e2ff28cf51fe511d8fa29d484d9281ff91de8c9c&token=1499787139&lang=zh_CN#rd
其次,我必须要说,这个课程,面向的用户并非零基础。关于这个课程的定位,可以参考这里:http://coding.imooc.com/learn/questiondetail/16248.html
如果你的基础一般,并且主要使用Java语言的话,我建议从我的《玩转数据结构》开始学习。传送门:https://coding.imooc.com/class/207.html
最后,关于你说的敲代码的问题,我的建议是:
1)理解清算法的思路。注意,这里不是让你自己有思路。是听完课程介绍以后,理解这些经典的思路是怎样的。这就好比我们学习物理,不是让我们自己能把牛顿力学公式想出来。我们学会牛顿力学公式是怎么回事儿,就已经很了不起了。
2)尝试自己写代码。写不出来很正常,看课程中我是怎么实现的,照猫画虎。
3)照猫画虎以后没有学完!关掉视频,看自己能不能独立把这个算法,根据自己理解的逻辑,编写出来。
4)如果不能,很正常!再看一遍视频,看我是怎么实现的。思考,为什么之前自己觉得自己理解了,但却实现不出来?是哪里理解的有偏差?还是有自己没在意的地方?还是怎样?不断总结。
5)总结以后需,关闭视频,看自己能不能独立把这个看自己能不能独立把这个算法,根据自己理解的逻辑,编写出来。回到了3)
6)直到自己能按照自己理解的逻辑,把一个算法实现出来了,我认为对这个算法的学习就过关了。
加油!:)
20 -
Lawrence
2019-09-20
加油!
022019-09-20 -
LexieMIZUKI
提问者
2019-08-16
非常感谢老师耐心,细心的回答!
我先按照老师说的学一段时间试试,如果还有问题再来提问。00
相似问题