本篇文章主要是总结我的数据结构与算法的入门经历,由于本人的数据结构与算法水平还很一般,所以这篇文章只是我的个人入门经历总结,而不是入门指导,大家可以把它当成故事来看。
学数据结构与算法的目的首先说一下学数据结构与算法的原因,我觉得最直接的原因应该是通过笔试吧。现在互联网大厂基本上都有笔试这一环节,而笔试考的正是数据结构与算法的题目。
那么互联网大厂为什么那么看重数据结构与算法呢?
一开始我还没有系统的学习数据结构与算法,只是知道有一个叫leetcode的刷题网站,有时候会去网站上看看题目,当时感觉算法题很像脑筋急转弯的题目,每题都挺有意思的,就是想不出来解法,看了答案后会豁然开朗。当时想的是:大厂原来是喜欢这种能做出“脑筋急转弯”、头脑灵活的人,这种人应该很方便后续的培养,感觉很合理。
后来我系统的学了学数据结构与算法,同时又补了点计算机的基础知识,才明白数据结构与算法在计算机中的地位。计算机各个学科的内容中基本上都有数据结构与算法的应用,可以说数据结构与算法是由计算机的其他学科发展汇总而成。它是属于工具类的学科,学好了这个工具,在遇到实际问题中便可以用它来进行解答,也就是可以写出更加高效有用的代码。
当然现在也有很多库,将很多数据结构与算法做了很好的封装,有很多方便的接口供大家使用。但是可能只有掌握了数据结构与算法的基础知识才能更好的使用这些接口,同时也可以修改相关的源码来实现自己想要的功能。所以可能这才是大厂为什么那么看重数据结构与算法的原因,这门课在计算机中的地位不言而喻。
下面介绍一下我个人的入门经历。
入门经历总结阶段一:硬啃《算法导论》(结果:缴械投降)
算法导论这本书我早有耳闻,听说它非常的难,但是好像只要把它吃透,算法基本上就ok了。刚入门的我也懒得去找一些数据结构与算法入门攻略啥的,便直接找了算法导论这本书的电子版,配合这mit的算法导论课直接开啃。
然后整个学习过程就是感觉算法没咋学,一直在听教授讲一堆数学证明;越听越听不下去,硬着头皮坚持了好几节课,但是其实就是仅仅把课听完而已,啥也没学会,也没有写代码。后面就坚持不下去了,就放弃了《算法导论》,从而去寻找一些入门攻略。
阶段二:《大话数据结构》(系统的了解了一些基本的数据结构)
硬啃《算法导论》失败后,我便打算找一本比较基础的书来入门,看了网上的一些推荐,便开始学习《大话数据结构》这本书了,这本书真的是很基础,看起来比较轻松愉快,也可以学到东西。这本书的内容基本上就是把一些很常用的数据结构给讲了一遍,还有很多图片来展示数据结构的一些操作,方便理解,十分适合入门的。可能是因为书名是大话数据结构,书中对一些常用的算法介绍相对较少,需要自己后面继续学习。
阶段三:《数据结构与算法之美》专栏学习(巩固了数据结构同时学习了很多算法)
学完《大话数据结构》之后,我对一些基本的数据结构有了一定的了解,但是对算法方面了解较少,准备找一本介绍算法的书来看看。那段时间看到朋友圈有大佬在推荐极客时间上面的《数据结构与算法之美》这个专栏,自己便去了解了一下,发现专栏上的东西还是很全的,试看了几节觉得不错,便把它买下了。
可能是因为花了钱吧,这个专栏我学的很认真,通过专栏一方面巩固了之前学的数据结构,同时又系统的学习了很多算法,收获还是很大的,下面是专栏的部分目录。
阶段四:刷题
刷题网站推荐:leetcode、牛客网
个人的刷题方法:每次刷题2小时,每道题给自己20分钟思考和编程,20分钟过了就去看答案,理解答案。
刷题顺序:建议按类型刷题(推荐下面的项目)
github