Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
图解算法小册-Java版 PDF 下载
匿名网友发布于:2024-07-22 11:46:26
(侵权举报)
(假如点击没反应,多刷新两次就OK!)

图解算法小册-Java版 PDF 下载 图1

 

 

资料内容:

 

01、算法对个人的意义

 

市面上大部分的算法书籍,第一章介绍算法,都会给大家列一列类似上面的那些
话,或者就是使用栈或队列来做一个引子,告诉大家算法很重要,你得需要去学,
吧啦吧啦....但是不知道大家有没有想过这样一个问题,算法对于个人而言到底有什么
意义呢?如果这个问题大家陌生,那你一定会听到有写了几年业务逻辑的老程序
员,说过我这些年从来没有用过算法,除了出去面试的时候之类的话。其实,我这
里真想说一句脏话,这些思想真的是TMD害人不浅啊。甚至我怀疑大多数说这句话
本身的人,有两种:一种就是严重缺乏自信心,觉得自己一辈子都没办法学好算法
了,所以就这样吧。第二种就是故意误人子弟,驱动来源于自己不会,方式采用侃
大山,反正忽悠一个是一个,再来身边也没有其他这方面厉害的朋友,说完之后自
己都没意识到哪里有问题,却对别人带去很不好的影响。所以如果你今天看到我的
这篇文章,我希望你能记住一世,这辈子都不要说出这种类似的话来,保持对
这个学科基本的尊重,哪怕多一点点匠心精神。算法对个人的意义如下:
算法题目的程序规模大多都是比较小的,也就意味着切入点很小。使得每一个做
题人,可以最大化的投入时间研究问题的本身。而在工作中,稍大一点的项目,
基本上是没办法随意改变代码结构的,甚至还会为了整体性能牺牲程序的简洁与
优雅。所以算法题是可以让你通过练习编写出好代码的最好的方式,没有之
算法题目中基本不会有图形化界面,只利用文本进行输入和输出。你可以相当
专注的去解决问题。而在工作中,你能获得专注去研究一个问题的机会,几乎很难。
想一想,假如你用JAVA写一个后台功能,其核心代码不到10行逻辑,但是
MVC得占据你三分之一工作量,定义接口占据你三分之一工作量,公司假如没前
端,再占据你三分之一工作量。整个这个过程,我有一个Amazon的朋友形容的
很贴切,掏粪
预测能力的构建,在大多数算法练习平台中,因为会将运算时间和内存使用状
况等信息实时提供给做题人,所以做题人甚至可以一边修改代码,一边观察修改
对程序产生的影响。这个是不得了的,在工作中,绝对不可能有这样的机会。而
在这个过程中,做题人可以提高对逻辑结构复杂程序进行性能预测的能力,该能
力将伴随其一身。
提升coding能力的最好方式。假如我们打王者荣耀,你要上王者,不开排位,
一直打电脑,能上的去吗?在工作中,你来回接触的就那么几个人,有几个能写
出特别优秀的代码,见到了,那说明老天眷顾你,大部分人都见不到。但是在算
法平台的练习中,基本上我们每一个问题,我们都能看到全世界最优秀的人提交
的代码。没有对比,虽然不成伤害,却更难成为进步!只有我们去阅读别人优秀
的逻辑,读懂别人思考的过程,与全世界顶尖的程序员编写代码的能力进行比
较,才可以成为真正的大牛。
算法题让你难受。用脚指头想一个问题,在各行各业中,想成为其行业的佼佼
者,是不是一定有一个难受的过程。假如天天写CRUD,并且还得意洋洋,我用
一套Generator生成只需要5分钟,其他时间就可以打打炉石,勾搭勾搭妹子。不
经历一个难受的过程,如何可以进步?就连郭德纲出名之前,也在玻璃窗里被关
过两天两夜。罗马不是一天建成的,但是如果不修,那就永远建不成。难受就是
真理,说明你正在进步。
单测都是骗人的。请大家不要高估工作中QA的能力(当然,也有牛逼的QA
我见过...),大部分的公司里,QA来做单测时,基本上是重新走了一遍开发者的
逻辑。更有甚者,开发直接说出我写完都已经测完了,要QA有什么用处,其实
这并不是一个段子,因为大部分QA是做不到完美的cover业务逻辑的,换句话
说,也就不可能构建出完美的测试用例测出你代码的问题。但是算法不是,大部
分的算法平台,都提供了实时反馈的机制,如果自己编写的代码可以得到快速,
客观的意见反馈,这绝对是有如神助。就好像是你打王者,旁边有个小精灵,总
是会在合适的时机告诉你,去下路,中路没人小心草丛。那如果不被带
飞,你信吗?