对于学习算法的困惑

来源: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)直到自己能按照自己理解的逻辑,把一个算法实现出来了,我认为对这个算法的学习就过关了。


加油!:)

2
0

Lawrence

2019-09-20

加油!

0
2
Lawrence
回复
LexieMIZUKI
哈哈,本专业考研中,回头复习ds,一起努力,
2019-09-20
共2条回复

LexieMIZUKI

提问者

2019-08-16

非常感谢老师耐心,细心的回答!
我先按照老师说的学一段时间试试,如果还有问题再来提问。

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程