算法和数据结构是做计算机开发需要掌握的必不可少的基础知识,是计算机科学领域最重要的基石之一,算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。但是一上来就直接学习难免会遇到一些比较难啃的问题,上次推荐的10本算法入门书籍,适合刚开始学习的新手以及想要了解算法基础的同学。本篇文章将推荐10本算法入门书籍,适合想要深入学习算法的同学。

算法学习书籍推荐系列可点击查看:

Linux书籍推荐系列可点击查看:

01《算法导论》

算法导论.png

这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。

作者:

  • Thomas H.Cormen:达特茅斯学院计算机科学系副教授
  • Charles E.Leiserson:麻省理工学院计算机科学与电气工程系教授
  • Ronald L.Rivest:麻省理工学院计算机科学系Andrew与Erna Viterbi具名教授
  • Clifford Stein:哥伦比亚大学工业工程与运筹学副教授

02《算法笔记》

算法笔记.png

这是一本零基础就能读懂的算法书籍,读者不需要因为自己没有语言基础而畏惧。本书已经覆盖了大部分基础经典算法,不仅可以作为考研机试和PAT的学习教材,对其他的一些算法考试(例如CCF的CSP考试)或者考研初试的数据结构科目的学习和理解也很有帮助,甚至仅仅想学习经典算法的读者也能从本书中学到许多知识,

03《算法设计》

算法设计.png

本书更侧重算法设计思路,不再赘述算法复杂度的分析。

04《算法设计手册》

算法设计手册.png

本书揭密了算法的设计与分析,以简单易懂的写作风格,介绍了各种算法技术,着重强调了算法分析。

本书可以作为算法设计课程的主教材,也是程序人员、研究人员和学生的常备参考书。

05《算法心得:高效算法的奥秘》

算法心得.png

在本书中,作者给我们带来了一大批极为诱人的知识,其中包括各种节省程序运行时间的技巧、算法与窍门。学习了这些技术,程序员就可写出优雅高效的软件,同时还能洞悉其中原理。这些技术极为实用,而且其问题本身又非常有趣,有时甚至像猜谜解谜一般,需要奇思妙想才行。

作者:

  • Henry S. Warren, Jr:计算机科学家,在IBM供职50余年,经历了IBM704时代、PowerPC时代及其后种种更迭。曾参与多个军事指挥与控制系统工程,并且参加了由Jack Schwarz领衔的“SET语言”项目。自1973年起,Hank就职于IBM研发部,努力探索编译器和计算机架构。当前正研究一种旨在每秒执行百亿亿次运算的超级计算机。Hank拥有纽约大学柯朗数学科学研究所计算机科学博士学位。

06《算法设计与分析基础》

算法设计与分析基础.png

作者基于丰富的教学经验,开发了一套全新的算法分类方法。该分类法站在通用问题求解策略的高度,对现有大多数算法准确分类,从而引领读者沿着一条清晰、一致、连贯的思路来探索算法设计与分析这一迷人领域。

本书十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。

07《算法设计与分析》

算法设计与分析.png

本书为计算机科学技术专业核心课程“算法设计与分析”教材.全书以算法设计技术和分析方法为主线来组织各知识单元,主要内容包括基础知识、分治策略、动态规划、贪心法、回溯与分支限界、算法分析与问题的计算复杂度、NP完全性、近似算法、随机算法、处理难解问题的策略等。书中突出对问题本身的分析和求解方法的阐述,从问题建模、算法设计与分析、改进措施等方面给出适当的建议,同时也简要介绍了计算复杂性理论的核心内容和处理难解问题的一些新技术。

本书可作为大学计算机科学与技术、软件工程、信息安全、信息与计算机科学等专业本科生和研究生教学用书,也可以作为从事实际问题求解的算法设计与分析工作的参考书。

作者

  • 屈婉玲,1969年毕业于北京大学物理系物理学专业,现任北京大学信息科学技术学院教授、博士生导师,中国人工智能学会离散数学专委会委员,
  • 张立昂,1965年毕业于北京大学数学力学系数学专业,北京大学信息科学技术学院教授、博士生导师。

08《算法详解》

算法详解.png

本书为对算法感兴趣的广大读者提供了丰富而实用的资料,能够帮助读者提升算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及在准备面试的应聘者和面试官阅读参考。

作者:

  • 蒂姆·拉夫加登(Tim Roughgarden)是斯坦福大学计算机科学系的教授,也是该校管理科学和工程系的客座教授,

09 《算法竞赛入门经典》

算法竞赛入门经典.png

本书是一本算法竞赛的入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。

本书可作为全国青少年信息学奥林匹克联赛(NOIP)复赛教材、全国青少年信息学奥林匹克竞赛(NOI)和ACM国际大学生程序设计竞赛(ACM/ICPC)的训练资料。

10《编程珠玑》

编程珠玑.png

本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。

作者

  • Jon Bentley 世界著名计算机科学家,被誉为影响算法发展的十位大师之一。