今天在群里刚好看到有人在讨论算法的问题,刚好自己曾经也有一个算法大神的梦,来说说自己对算法的理解。
算法怎么学?
什么样程度才算把算法学透?
算法学会了有什么用?
算法的学习是非常重要的,那算法学到什么程序才算学通?很简单学算法的有个必备的基础功「白板编程」,即用笔和纸就可以把一个算法手写出来。举个例子快速排序,这个算法你脑子里能第一时间把它理清思路吗?随后还能手写的出来吗?
算法是一门非常深奥的学科,除了一些基础的算法,还有非常多更高阶的内容。但要知道所有的编程技术,都是为了解决现实生活中某个实际问题。算法也是如此。
很多人学算法学不明白或者觉得很难,就是因为这些晦涩难懂的算法,在实际的编程中你很难应用到。做编程 90% 的人是没学过算法,但不妨碍别人开发做的牛逼。然而不懂算法的人,是很难进阶到高阶的岗位,也就是我们俗称的码农。
那算法在实际应用中有什么用?举个例子布隆过滤器算法(Bloom Filter),非常经典的一个去重算法。它能非常高效的进行各种去重,提高你的运行效率。
程序的效率提高它能得到收益?再来看个例子 2018 年淘宝双 11,开场 21 秒交易额超 10 亿,每秒就是 0.47 亿。淘宝的程序多优化一秒就能多带来 0.47 亿交易额。
而在我们现实生活中有无数这样的例子,多优化这一秒就能给公司带来巨大的收益。
回到最初的问题,什么样才算把算法学通?
1 完全明白算法的运作原理
2 能白板编程
3 知道它在实际应用中能有什么用
把这三点弄清楚你的算法已经比绝大部分人都强了。
那具体要怎么学算法?
1 初学者跟着视频学习
算法有很多经典的书籍,但这些书籍都是劝退杀手。当年我在学算法的时候,每看一本算法书,就多产生一点不想在继续学算法的冲动。这些书是非常经典非常好,但对于小白来说太难理解了。
初学者学习算法最好的方式就是跟着视频学,这里我推荐慕课网的bobo老师的算法课。他的算法课通俗易懂,并且每个算法都配有动态演算过程。是我接触到最好的算法入门视频了。
2 啃书刷题
学完了bobo老师的算法课,就可以开始找本经典的算法书籍,开始啃书之旅。这里推荐《算法》第四版这本书。书一定是要啃的,这样你才能进一步提高。当然这时候的学习不能是傻啃,从头看到尾的那种。一定是要带着问题去时常翻阅书籍。
这时候就要开始配合刷题了,学的东西你不用起来,过一段时间一定会忘记的。你就可以去 leetcode 开始刷题,最开始从简单的难度刷起,逐步到最难等级。
3 参加算法比赛
前两步你都坚持下来并认真的去做了,那么普通难度的算法对你来说已经没有什么挑战了。这时候你就可以去参加各种算法比赛了。比如蓝桥杯,ACM,LeetCode周赛等等。这些比赛不仅含金量高,而且往往有丰厚的奖金。如果你能在 ACM 上拿到名次,国内的大厂基本就对你敞开大门。
4 时常关注最新互联网动态
回归本质算法最终也是用来解决生活中的问题,所以你也要时常了解最前沿的技术。看看大厂们又发布哪些产品,他们都用了哪些最新的技术,学习借鉴。
学术要研究,实际应用也要持续关注。那要怎么关注到这些最新的前沿动态呢?这里就要给大家介绍我痴海日报群了,从开始到至今已经运营了 95 期。每天痴海都会在群里给大家提供 3~5 篇优质的文章,中英文都会有。不只局限在编程相关话题,还包括互联网见闻、增长黑客、技术变现、个人能力提升等等。
领取专属 10元无门槛券
私享最新 技术干货