现如今学习算法的困难在于学习资料过多,水平参差不齐,难度高低不一,初学者很难发掘一条清晰明确的学习路径。另一方面,算法的一大难点在于编程实现,目前大部分学习资料的程序范例基于 C,C++,Java,对于机器学习或前端领域的学习 / 从业者不一定友好,因此本文将循序渐进的介绍评价较好的学习资料和平台,帮助你舍弃糟粕,规划学习路线,提高练习强度。
入门级别
入门级别的书籍可以分为兴趣培养和基础介绍两个方向。此阶段重点培养兴趣,注重易读性,同时兼顾算法原理。兴趣类书籍我推荐克里斯托弗·斯坦纳的《算法帝国》(豆瓣评分 7.2)。
真正介绍算法的入门类书籍,《算法图解》(豆瓣评分 8.4)十分优秀。
相比于枯燥的教科书,这本书的表达要有趣得多,图解的形式也更加便于理解,对于新手来说十分友好。这本书的好处在于,它可以帮助你以一个轻松的方式快速对算法产生直观的认识和思考。其缺点则是缺乏足够的深度,系统性也没有特别好,但毋庸置疑,是很好的入门书。
另外《大话数据结构》(豆瓣评分 7.9)是国内作者写的入门书籍中相当优秀的一本书。它同样面对新人读者,以一种趣味化的方式讲解数据结构和相关算法的知识。
进阶进别
在这一阶段,应该对算法和数据结构拥有更系统化和深入的了解。包括存储机制,资源消耗,每种数据结构和算法的特点及使用场景。最好能多加思考,了解算法的来源,目的,以及发展趋势。
在书籍方面,《数据结构与算法分析:C 语言描述》(豆瓣评分 8.9),《数据结构与算法分析:C++ 描述》(豆瓣评分 8.5),《数据结构与算法分析:Java语言描述》(豆瓣评分 8.6)是三本经典书籍,内容较为系统化,讲解较为深入严谨,也被很多学校用作教材。
对于前端从业者,有《数据结构与算法JavaScript描述》(豆瓣评分 6.5)和《学习JavaScript数据结构与算法》(豆瓣评分 7.2)两本基于 JS 的算法书。但是这两本书的评价都比较一般,显然不足以称为经典,但是市面上使用 JS 描述算法的书籍少之又少,其中的描述和代码实现可以作为 JS 工程师的借鉴。
先学数据结构,然后看算法入门书,推荐《趣学算法》,有大量图解,比较简单,容易懂,而且有源码下载直接运行。传统的算法书,大多注重内容的收录,但却忽视思维过程的展示,因此我们学习了经典的算法,却费解。
课程方面,麻省理工学院的算法导论公开课质量很高,干货充足。在网易公开课上有全部课程的中文翻译。你也可以选择北京大学的数据结构与算法公开课,在 Coursera,edX 上均有免费课程,中国大学 MOOC 也有很多国内顶尖学校提供的公开课,可以免费学习。
麻省理工学院研究生课程:《高级数据结构》(Advanced Data Structures)是一门高质量的进阶课程,课程难度较大,讲解了数据结构方面的主要研究成果和最新发展方向。适合掌握好一定基础后提高学习。
任何级别
6.博弈类算法。博弈树,二进制法等。7.最大团,最大独立集。8.判断点在多边形内。9. 差分约束系统.10. 双向广度搜索、A*算法,最小耗散优先.相关的知识 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(。
可以说大部分程序员都在学习算法与数据结构的路上不断前进,高手与进阶的界限其实十分模糊。在任何阶段,一些公认的经典著作都具有深刻的价值。因此,无论是面对新手还是进阶级别的从业者,经典都值得推荐。
企业回趋动科技专注于为企业用户构建数据中心级AI算力资源池和AI开发平台, 通过软件定义算力的方式,将AI应用与物理算力资源解耦,帮助用户提高资源利用率和降低TCO,提高算法工程师的工作效率。
《算法》(豆瓣评分 9.4),公认的经典之一,也许是必备的工具书。
《算法导论》(豆瓣评分 9.3),另一本经典著作,被作为很多学校的教科书。
程序理解.找到一种算法的实现程序,对着程序理解,可以尝试分布运行,观察一下变量的变化,这样来理解算法.实在太难的算法,可以边写边改来理解.当时我学习插头dp的时候就是这样,不论怎么总是一知半解,最后硬着头皮写了一遍,改。
《计算机程序设计艺术》(豆瓣评分 9.4),这本书体量很大,内容经典,难度也相对较大,广受业界认可,值得一读。
求职面试
《剑指 Offer》(豆瓣评分 8.3)
《编程之美》(豆瓣评分 7.6)是两个经典的求职类书籍,里面涉及的算法均为面试经典算法。但书籍的缺点在于不方便求职者实战,而且求职市场风云变幻,除去经典题目外,每年也有不同的动向,书籍无法涵盖新题型和题解。
中文官方网址:
结语