数据结构与算法书单整理
总阅读量:26198次
注意,这是一个书单整理,不是书单推荐。
那么,怎么判断是否值得购买呢?主要可以通过三个方面:
- 瞅瞅豆瓣评分和书籍评价
- 看看亚马逊的书籍评价
- 去技术群问问书籍是否值得买
对于书籍,尽量遵循买一本看一本,不要贪多,不要贪便宜。
《数据结构与算法分析:Java语言描述》
本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。本书把算法分析与有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。
- 豆瓣评分:8.3【183 人评价】
- 推荐理由:本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。
- 友情提示:算法方法还有其他很好的书籍,例如《算法导论》、《算法(第四版)》,也可以选择阅读。重要的是,保持耐心,享受这个痛并快乐的过程。
《数据结构与算法经典问题解析:Java语言描述》
本书是一本数据结构方面的优秀教材,以Java为描述语言,介绍了计算机编程中使用的数据结构和算法。本书强调问题及其分析,而非理论阐述,共分为21章,讲述了基本概念、递归和回溯、链表、栈、队列、树、优先队列和堆、并查集DAT、图算法、排序、查找、选择算法(中位数)、符号表、散列、字符串算法、算法设计技术、贪婪算法、分治算法、动态规划算法、复杂度类型等内容。每章首先阐述必要的理论基础,然后给出问题集。全书中大约有700个算法问题及相应的解法,对于许多问题,本书提供了多个具有不同复杂度的解决方法。
本书可作为高等院校计算机及其相关专业的数据结构课程的教材或教学参考书,同时也可以作为从事计算机研究与开发的技术人员的参考书,特别是对正在准备面试、参加选拔性考试以及校园面试的读者尤为有用。
- 作者: 纳拉辛哈·卡鲁曼希
- 豆瓣评分:8.8【13 人评价】
《算法导论(原书第3版)》
这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。
- 作者: [美] Thomas H.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein
- 豆瓣评分:9.3【4823 人评价】
《算法(第4版)》
《算法(英文版•第4版)》作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些Java代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。
《算法(英文版•第4版)》适合用作大学教材或从业者的参考书。
- 塞奇威克 (Robert Sedgewick) (作者), 韦恩 (Kevin Wayne) (作者), 谢路云 (译者)
- 豆瓣评分:9.3【470 人评价】
《算法新解》
本书分4 部分,同时用函数式和传统方法介绍主要的基本算法和数据结构。数据结构部分包括二叉树、红黑树、AVL 树、Trie、Patricia、后缀树、B 树、二叉堆、二项式堆、斐波那契堆、配对堆、队列、序列等;基本算法部分包括各种排序算法、序列搜索算法、字符串匹配算法(KMP 等)、深度优先与广度优先搜索算法、贪心算法以及动态规划。
本书适合软件开发人员、编程和算法爱好者,以及高校学生阅读参考。
- 作者: 刘新宇
- 豆瓣评分:9.2【41 人评价】
《计算机程序设计艺术》
- 一共有 5 册
- 豆瓣评分:平均 9 分多。
《算法笔记》
这是一本零基础就能读懂的算法书籍,读者不需要因为自己没有语言基础而畏惧。书籍的第2章便是一个C语言的入门教程,内容非常易懂,并且十分实用,阅读完这章就可以对本书需要的C语言基础有一个较好的掌握。
本书已经覆盖了大部分基础经典算法,不仅可以作为考研机试和PAT的学习教材,对其他的一些算法考试(例如CCF的CSP考试)或者考研初试的数据结构科目的学习和理解也很有帮助,甚至仅仅想学习经典算法的读者也能从本书中学到许多知识,本书还有配套的《算法笔记上机训练实战指南》
本书的作者是同样经历过考研机试和各类算法考试的专家型学长,知晓这类考试中的痛点,以及考生在学习算法时容易产生困惑的地方,因此可以把本书看作是学长为你奉献的满满的经验干货,这是有价值的东西。
本书的试印版本献给了浙大考研学子,并令当年的浙大考研机试平均分增加了十多分,收获了考生的大量好评。但作者并没有止步于此,经过了半年多时间的内容完善和补充之后,新的版本在新一年的考研机试中再次获得了考生的一致赞美。最后,在经过精心整理之后,书籍终于定稿,并编撰成书。
我们知道,纸质书籍的一个弱点就在于不能像软件一样随时更新内容,但本书采用了与二维码相结合的方式,使得本书变为能够随时更新内容的书籍,读者也可以随时从二维码中找到勘误。这种作者和读者能够相互沟通的方式让书籍变“活”了,也能够帮助提升读者对知识的理解。
- 作者: 胡凡 / 曾磊
- 豆瓣评分:9.4【70 人评价】
《算法详解(卷1)——算法基础》
算法是计算机科学领域最重要的基石之一。算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。
算法详解系列图书共有4卷,本书是第1卷——算法基础。本书共有6章,主要介绍了4个主题,它们分别是渐进性分析和大O表示法、分治算法和主方法、随机化算法以及排序和选择。附录A和附录B简单介绍了数据归纳法和离散概率的相关知识。本书的每一章均有小测验、章末习题和编程题,这为读者的自我检查以及进一步学习提供了较多的便利。
本书为对算法感兴趣的广大读者提供了丰富而实用的资料,能够帮助读者提升算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及在准备面试的应聘者和面试官阅读参考。
- 作者: [美]蒂姆·拉夫加登(Tim Roughgarden)
- 出版时间是 2019-01 ,暂无豆瓣评分。
《算法:C语言实现》
《算法:C语言实现(第1-4部分)基础知识、数据结构、排序及搜索(原书第3版)》细腻讲解计算机算法的C语言实现。全书分为四部分,共16章。包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征,在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。书中提供了用C语言描述的完整算法源程序,并且配有丰富的插图和练习,还包含大量简洁的实现将理论和实践成功地相结合,这些实现均可用在真实应用上。
《算法:C语言实现(第1-4部分)基础知识、数据结构、排序及搜索(原书第3版)》内容丰富,具有很强的实用价值,适合作为高等院校计算机及相关专业本科生算法课程的教材,也是广大研究人员的极佳参考读物。
- 作者: 塞奇威克
- 豆瓣评分:8.7【179 人评价】
- 一共有两册
《算法精解:C语言描述》
本书是数据结构和算法领域的经典之作,十余年来,畅销不衰!全书共分为三部分:第一部分首先介绍了数据结构和算法的概念,以及使用它们的原因和意义,然后讲解了数据结构和算法中最常用的技术——指针和递归,最后还介绍了算法的分析方法,旨在为读者学习这本书打下坚实的基础;第二部分对链表、栈、队列、集合、哈希表、堆、图等常用数据结构进行了深入阐述;第三部分对排序、搜索数值计算、数据压缩、数据加密、图算法、几何算法等经典算法进行了精辟的分析和讲解。
本书的众多特色使得它在同类书中独树一帜:具体实现都采用正式的C语言代码而不是伪代码,在很多数据结构和算法的实现过程中,有大量细节问题是伪代码不能解决的;每一章都有精心组织的主题和应用;全部示例来自真实的应用,不只是一般的练习;对每种数据结构、算法和示例都进行了详细分析;每一章的末尾都会有一系列问题和对应的回答,旨在强调这一章的重要思想……
本书中的代码尤为值得强调:所有实现都采用C语言编写,所有代码都优先用于教学目的,所有代码都在4种平台上经过完整测试,头文件记录了所有公共的接口,命名规则适用于全书所有的代码,所有的代码都包含大量注释……
本书内容包括:
· 数据结构和算法的概念,以及使用它们的原因和意义
· 指针和递归
· 算法分析
· 常用数据结构:链表、栈、队列、集合、哈希表、树、堆、优先级队列以及图
· 排序和搜索
· 数值计算
· 数据压缩
· 数据加密
· 图算法
· 几何算法
- 作者: Kyle Loudon
- 豆瓣评分:8.0【122 人评价】
《数据结构与算法:C语言实现》
本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。
在本书中,作者更加精炼并强化了他对算法和数据结构方面创新的处理方法。通过C程序的实现,着重阐述了抽象数据类型的概念,并对算法的效率、性能和运行时间进行了分析。
全书特点如下:
●专用一章来讨论算法设计技巧,包括贪婪算法、分治算法、动态规划、随机化算法以及回溯算法
●介绍了当前流行的论题和新的数据结构,如斐波那契堆、斜堆、二项队列、跳跃表和伸展树
●安排一章专门讨论摊还分析,考查书中介绍的一些高级数据结构
●新开辟一章讨论高级数据结构以及它们的实现,其中包括红黑树、自顶向下伸展树。treap树、k-d树、配对堆以及其他相关内容
●合并了堆排序平均情况分析的一些新结果
本书是国外数据结构与算法分析方面的标准教材,介绍了数据结构(大量数据的组织方法)以及算法分析(算法运行时间的估算)。本书的编写目标是同时讲授好的程序设计和算法分析技巧,使读者可以开发出具有最高效率的程序。 本书可作为高级数据结构课程或研究生一年级算法分析课程的教材,使用本书需具有一些中级程序设计知识,还需要离散数学的一些背景知识。
- 作者: [美] Mark Allen Weiss
- 豆瓣评分:8.9【1668 人评价】
《算法技术手册(原书第2版)》
本书使用实际代码而非伪代码来描述算法,并以经验主导支撑数学分析,侧重于应用且规范严谨。本书提供了用多种程序设计语言实现的文档化的实际代码解决方案,还介绍了近40种核心算法,其中包括用于计算点集的Voronoi图的Fortune算法、归并排序、多线程快速排序、AVL平衡二叉树实现以及空间算法。
- 作者: George T. Heineman / Gary Pollice / Stanley Selkow
- 豆瓣评分:8.2【142 人评价】
《数据结构与算法JavaScript描述》
通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。
本书主要内容如下。
数组和列表:最常用的数据结构。
栈和队列:与列表类似但更复杂的数据结构。
链表:如何通过它们克服数组的不足。
字典:将数据以键-值对的形式存储。
散列:适用于快速查找和检索。
集合:适用于存储只出现一次的元素。
二叉树:以层级的形式存储数据。
图和图算法:网络建模的理想选择。
算法:包括排序或搜索数据的算法。
高级算法:动态规划和贪心算法。
- 作者: [美] Michael McMillan
- 豆瓣评分:6.5【116 人评价】
《学习JavaScript数据结构与算法》
本书首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。
- 作者: [巴西] 格罗纳(Loiane Groner)
- 豆瓣评分:8.1【92 人评价】
《Python算法教程》
本书用Python语言来讲解算法的分析和设计。本书主要关注经典的算法,但同时会为读者理解基本算法问题和解决问题打下很好的基础。全书共11章。分别介绍了树、图、计数问题、归纳递归、遍历、分解合并、贪心算法、复杂依赖、Dijkstra算法、匹配切割问题以及困难问题及其稀释等内容。本书在每一章结束的时候均有练习题和参考资料,这为读者的自我检查以及进一步学习提供了较多的便利。在全书的最后,给出了练习题的提示,方便读者进行查漏补缺。
- 作者: [挪威] Magnus Lie Hetland 赫特兰
- 豆瓣评分:7.8【61 人评价】
《数据结构与算法:python语言实现》
本书采用Python语言讨论数据结构和算法,详细讲解其设计、分析与实现过程,是一本内容全面且特色鲜明的教材。书中将面向对象视角贯穿始终,充分利用Python语言优美而简洁的特点,强调代码的健壮性和可重用性,关注各种抽象数据类型以及不同算法实现策略的权衡。
- 作者: 迈克尔.·T·古德里奇 / 罗伯托·塔玛西亚 / 迈克尔·H·戈德瓦瑟
- 豆瓣评分:4.6【10 人评价】
《数据结构 Python 语言描述》
在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大。Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。
《数据结构 Python语言描述》第1章简单介绍了Python语言的基础知识和特性。第2章到第4章对抽象数据类型、数据结构、复杂度分析、数组和线性链表结构进行了详细介绍,第5章和第6章重点介绍了面向对象设计的相关知识、第5章包括接口和实现之间的重点差异、多态以及信息隐藏等内容,第6章主要讲解继承的相关知识,第7章到第9章以栈、队列和列表为代表,介绍了线性集合的相关知识。第10章介绍了各种树结构,第11章讲解了集和字典的相关内容,第12章介绍了图和图处理算法。每章最后,还给出了复习题和案例学习,帮助读者巩固和思考。
《数据结构 Python语言描述》不仅适合高等院校计算机专业师生阅读,也适合对Python感兴趣的读者和程序员阅读。
- 作者: [美] Kenneth A. Lambert 兰伯特
- 豆瓣评分:6.1【16 人评价】
《数据结构、算法与应用(原书第2版)》
《数据结构、算法与应用——C++语言描述》是享有盛誉的数据结构教科书的第2版。它完整地包含了基本数据结构的内容,是CS2课程的理想用书。作者Sartaj Sahni通过循循善诱的讲解、直观具体的讨论和基于现实的应用,让读者轻松、愉快地学习。新版书着重利用标准模板库(STL),把书中开发的数据结构和算法与相应的STL实现方法相互关联。本书还增加了很多新的实例和练习题。
书中的应用实例是它的特色。Sahni博士为每一个数据结构和算法都提供了若干个应用实例,涉及排序、压缩编码和图像处理等多个方面。这些实例把概念和应用结合在一起,使理论与实践统一,从而让概念容易理解,使学生增加学习动力和兴趣。
本书采用的实用教学方法,不仅充实了理论概念,而且大量的习题让学生有了实践机会(书中有800多道练习题,包括理解题和简单的编程题和工程设计题)。除此之外,本书的配套网站上包含书中的所有程序、示例数据、运行结果、部分练习的解答和带有结果的示例测试。
- 作者: Sartaj Sahni
- 豆瓣评分:7.3【27 人评价】
《算法设计与应用》
本书全面系统地介绍算法设计和算法应用的各个领域,内容涵盖经典数据结构、经典算法、算法分析方法、算法设计方法以及算法在各个领域的应用,还包含一些高级主题。本书采用应用驱动的方法引入各章内容,内容编排清晰合理,讲解由浅入深。此外,各章都附有巩固练习、创新练习和应用练习三种类型的题目,为读者理解和掌握算法设计和应用提供了很好的素材。
本书可作为高等院校计算机及相关专业“数据结构和算法”课程的本科生、研究生教材,也可作为算法理论和实践工作者的参考手册。
- 作者: 迈克尔 T. 古德里奇(Michael T. Goodrich) / 罗伯特·塔马契亚(Roberto Tamas
- 出版时间是 2017-11 ,暂无豆瓣评分。
《算法笔记》
本书介绍了若干常见算法,既包括排序、哈希等基础算法,也包括无约束优化、插值与拟合等数值计算方法。本书在介绍算法的同时,结合了作者自己对数学背景、应用场景的理解,便于读者把握算法的核心思想。本书尽可能地避开了以应试为导向的灌输式讲解,力求引起读者的兴趣并扩大其视野,例如在介绍哈希时,讲解了如何将哈希的算法思想运用于相似性搜索、负载均衡等多个实际问题中;又如在介绍高斯消去法时,讲解了相关的数学理论及编程实现上的具体技巧,并将其运用于对大规模稀疏线性方程组的求解,等等。本书面向有一定高等数学、编程语言基础及对算法有初步了解的读者,包括高等院校的学生、程序员、算法分析人员及设计人员等,旨在帮助读者进一步学习算法,理解与算法相关的理论基础和应用实例。
- 刁瑞 (作者)
- 出版时间是 2016-07 ,暂无豆瓣评分。
《妙趣横生的算法》
《妙趣横生的算法(C语言实现)(第2版)》共11章,分2篇。第1篇为算法基础,包括数据结构基础知识、常用的查找与排序方法、常用的算法思想等。第2篇为常用算法实例解析,包括20个编程基本功趣题、39个数学趣题、14个数据结构趣题、7个数值计算趣题、6个综合题、61个算法设计与数据结构面试题、4个ACM程序设计竞赛题目。
- 作者: 杨峰
- 豆瓣评分:7.6【44 人评价】
《算法设计指南》
本书由算法领域的知名专家Steven Skiena教授编写,其主要内容包括基本算法设计、算法分析、数据结构、排序与查找、图算法、动态规划以及难解问题与近似算法。
“设计”是本书的核心,作者不但以生动有趣的语言讲授了算法设计中的常用技术与思想,还着重教导我们应从已有经典设计和实现中汲取力量来完成问题求解,而这正是一个优秀算法工作者所必备的素养。为了更全面真实地展现作者的算法设计观,本书每章都给出了若干取自现实案例的精彩War Story,读者可以从中深刻体验到优秀算法设计的曲折历程。为了减轻阅读的难度,作者淡化了繁难的算法分析而仅仅给出性能结论与对比,这在同类算法书中是相当少见的。此外,本书配套网站包含大量算法设计资源以及作者本人的授课视频,为算法设计者提供了极大的便利。
本书长期居于算法畅销教材前列,是一本不可多得的“算法设计指南”,它不仅能作为计算机相关专业算法课程的教材,对于相关领域从业人员亦是极具价值的参考书。
- 作者: 斯蒂文·斯金纳
- 豆瓣评分:8.1【12 人评价】
《算法基础:打开算法之门》
本书介绍了什么是计算机算法,如何描述它们,以及如何来评估它们。这些计算机算法将提供:利用计算机搜索信息的简单方式;解决各种排序问题的方法;利用有向无环图和最短路径法来解决基本问题的方法(可用于建模公路网络,任务间的依赖及金融关系);解决字符串(例如DNA结构)问题的方法;密码学背后的基本原理;数据压缩的基础知识;以及甚至一些没有人能够理解如何在计算机上用相当长的时间来解决的问题。
本书适合作为计算机专业本科生“算法设计与分析”课程的教材,也适合相关专业人员阅读。
- 作者: [美] 托马斯 H.科尔曼(Thomas H.Cormen)
- 豆瓣评分:8.0【28 人评价】
《算法基础》
本书的撰写有机结合了理论与实现,在讲授算法理论的同时也通过C#实例讲授了算法的实现。通过描述并分析一些重要的传统算法,从而理解它们并且了解每一个算法在什么时候使用较为适合,通俗易懂地教授读者创造自己的算法的技巧。这些技巧让读者能从不同的角度看问题,建立有用的方法工具,从而解决实际问题,抑或从容面对面试难题。本书适合当作“算法设计与分析”和“数据结构与算法”两门课程的教材或参考书使用。特别是本书还融入和面试相关的内容,因此适合作为算法相关工作面试的参考资料。
-
作者: [美] Rod Stephens
-
出版时间是 2017-06 ,暂无豆瓣评分。
貌似翻译的一般~原版书不错。
《算法基础(第5版)》
《算法基础》自1997年出版以来深受读者喜爱,已经被翻译成多种语言出版,并成为世界许多高校广泛采用的算法教材之一。书中对算法设计、算法的复杂度分析和计算复杂度进行了恰如其分的介绍。作者用平实的语言和简单的符号介绍了各种抽象的数学概念,既浅显易懂,又不失严谨。为了便于读者理解和记忆,作者还提供了大量的示例,并在附录中介绍了基本的数学概念。
第5版新增了一章,介绍遗传算法和遗传编程,其中提供了理论和实践两方面的应用。此外,这一版还对练习和示例进行了全面更新,并且改进了教师资源。本书可作为本科生和研究生算法课程的教材,也可供程序员及算法分析和设计人员阅读。
- 那不勒坦 (Richard E.Neapolitan) (作者), 贾洪峰 (译者)
- 豆瓣评分:7.5【11 人评价】
《算法设计与分析基础(第 3 版)》
作者基于丰富的教学经验,开发了一套全新的算法分类方法。该分类法站在通用问题求解策略的高度,对现有大多数算法准确分类,从而引领读者沿着一条清晰、一致、连贯的思路来探索算法设计与分析这一迷人领域。《算法设计与分析基础(第3版)》作为第3版,相对前版调整了多个章节的内容和顺序,同时增加了一些算法,并扩展了算法的应用,使得具体算法和通用算法设计技术的对应更加清晰有序;各章累计增加了70道习题,其中包括一些有趣的谜题和面试问题。《算法设计与分析基础(第3版)》十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。
- 作者: Anany Levitin
- 豆瓣评分:8.8【56 人评价】
《算法之美——隐匿在数据结构背后的原理(C++版)》
《算法之美——隐匿在数据结构背后的原理(C++版)》围绕算法与数据结构这个话题,循序渐进、深入浅出地介绍了现代计算机技术中常用的40 余个经典算法,以及回溯法、分治法、贪婪法和动态规划等算法设计思想。在此过程中,《算法之美——隐匿在数据结构背后的原理(C++版)》也系统地讲解了链表(包括单向链表、单向循环链表和双向循环链表)、栈、队列(包括普通队列和优先级队列)、树(包括二叉树、哈夫曼树、堆、红黑树、AVL 树和字典树)、图、集合(包括不相交集)与字典等常用数据结构。同时,通过对22 个经典问题(包括约瑟夫环问题、汉诺塔问题、八皇后问题和骑士周游问题等)的讲解,逐步揭开隐匿在数据结构背后的算法原理,力图帮助读者夯实知识储备,激活思维技巧,并最终冲破阻碍编程能力提升的重重藩篱。
《算法之美——隐匿在数据结构背后的原理(C++版)》适合作为大专院校相关专业学生研习算法与数据结构知识的课外参考书。对有意参加信息学竞赛的读者,本书亦有很强的参考价值。此外,鉴于算法与数据结构在求职过程中常常被视为考察重点,所以就临近毕业的学生或其他欲从事IT 行业的求职者而言,阅读《算法之美——隐匿在数据结构背后的原理(C++版)》也将对面试备考大有裨益。
- 作者: 左飞
- 豆瓣评分:7.2【10 人评价】
《C++程序设计:基础、编程抽象与算法策略》
本书以简单易懂的写作风格,通过解决现实世界常见的问题来介绍各种算法技术,揭示了算法的设计与分析思想。全书共有41章,分为四大部分,图文并茂,把各种算法的核心思想讲得浅显易懂。本书可作为高等院校算法相关课程的本科生教材,也可作为研究人员、专业技术人员的常备参考书。
- 作者: [德]贝特霍尔德·弗金 / 赫尔穆特·阿尔特
- 出版时间是 2018-01 ,暂无豆瓣评分。
《算法设计与分析(第3版)》
《算法设计与分析》系统地介绍了算法设计与分析的概念和方法,共4篇内容。第1篇介绍算法设计与分析的基本概念,结合穷举法、排序问题及其他一些算法,对算法的时间复杂性的概念及复杂性的分析方法作了较为详细的叙述;第2篇以算法设计技术为纲,从合并排序、堆排序、离散集合的union和find操作开始,进而介绍递归技术、分治法、贪婪法、动态规划、回溯法、分支与限界法和随机算法等算法设计技术及其复杂性分析;第3篇介绍计算机应用领域里的一些算法,如图和网络流,以及计算几何中的一些问题;第4篇介绍算法设计与分析中的一些理论问题,如NP完全问题、计算复杂性问题、下界理论问题,最后介绍近似算法及其性能分析。
《算法设计与分析》内容选材适当、编排合理、由浅入深、循序渐进、互相衔接、逐步展开,并附有大量实例,既注重算法的思想方法、推导过程和正确性的证明技术,也注重算法所涉及的数据结构、算法的具体实现和算法的工作过程。
《算法设计与分析》可作为高等院校计算机专业本科生和研究生的教材,也可作为计算机科学与应用的科学技术人员的参考资料。
- 郑宗汉 (作者), 郑晓明 (作者)
- 出版时间是 2017-10 ,暂无豆瓣评分。
《Java常用算法手册(第3版)》
本书分三篇,共14章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏等领域中的应用;后梳理和精选了一些经典的算法面试题,供读者开拓思维之用。
- 宋娟 (作者)
- 出版时间是 2016-06 ,暂无豆瓣评分。
《C++程序设计:基础、编程抽象与算法策略》
本书是一本关于C++语言的经典书籍,全书共计20章,主要介绍了C++的基本知识、函数和库、字符串、流、集合、类的设计、递归、递归策略、回溯算法、算法分析、指针与数组、动态内存管理、效率与表示、线性结构、映射、树、图、继承、迭代的策略等内容。本书重点图突出,全面讲解了C++语言的基本概念,深入剖析了具体的编程思路。同事,每章后面都有配套的的习题,有助于读者进一步理解和掌握晦涩的概念。本书适合作为计算机专业及相关专业学生的教材或教学参考书,也适合希望学习C++语言的初学者和中高级程序员使用。
- 埃里克S·罗伯茨 (Eric S. Roberts) (作者), 李雁妮 (译者)
- 出版时间是 2016-11 ,暂无豆瓣评分。
《函数式算法设计珠玑》
本书采用完全崭新的方式介绍算法设计。全书由30个珠玑构成,每个珠玑单独列为一章,用于解决一个特定编程问题。这些问题的出处五花八门,有的来自游戏或拼图,有的是有趣的组合任务,还有的是散落于数据压缩及字串匹配等领域的更为熟悉的算法。每个珠玑以使用函数式编程语言Haskell对问题进行描述作为开始,每个解答均是诉诸于函数式编程法则从问题表述中计算得到。本书适用于那些喜欢学习算法设计思想的函数式编程人员、学生和老师,同样适用于那些期望以数学推理方式处理程序的人员。
- 作者: Richard Bird
- 出版时间是 2017-04 ,暂无豆瓣评分。
《数据结构与算法》
《数据结构与算法》详细介绍了数据结构与算法分析的核心内容,其中,数据结构知识包括:数据结构概述、线性数据结构、树数据结构、图数据结构、查找与排序等;算法分析与设计知识包括:算法分析与设计概述、算法复杂度分析、分治递归算法、贪心算法、动态规划算法等。
本书采用项目驱动的知识组织方式,以案例为导向引出知识点及其理论基础,并通过配合具体案例程序实现过程,贯通了数据结构算法设计与分析的整体课堂教学过程,特别适合当今的反转课堂,MOOC等新型教学方式。
本书从项目入手引人知识点理论,从而引导学生对知识点进行探索性学习,进而归纳后形成学生能掌握的知识点。
- 林劼 (作者), 刘震 (作者), 陈端兵 (作者), 戴波 (作者)
- 出版时间是 2018-08 ,暂无豆瓣评分。
《C++数据结构与算法(第4版)》
《国外计算机科学经典教材:C++数据结构与算法(第4版)》
全面系统地介绍了数据结构,并以C++语言实现相关的算法。书中主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。书中还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配等主题。书中包含大量的示例分析和图形,便于读者进一步理解和巩固所学的知识。
- 乔兹德克 (Adam Drozdek) (作者), 徐丹 (译者), 吴伟敏 (译者)
- 出版时间是 2014-10 ,暂无豆瓣评分。
《数据结构与算法分析:C++语言描述(第四版)》
《国外计算机科学教材系列·数据结构与算法分析:C++语言描述(第四版)》
本书是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书中内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。本书把算法分析与C++程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。
- M.A.韦斯 (Mark Allen Weiss) (作者), 冯舜玺 (译者)
- 出版时间是 2016-08 ,暂无豆瓣评分。
面试视角的算法书
《程序员代码面试指南:IT名企算法与数据结构题目最优解(第二版)》
这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化。书中将所有的面试题从难到易依次分为“将、校、尉、士”四个档次,方便读者有针对性地选择“刷”题。本书所收录的所有面试题都给出了最优解讲解和代码实现,并且提供了一些普通解法和最优解法的运行时间对比,让读者真切地感受到最优解的魅力!__eol__本书中的题目全面且经典,更重要的是,书中收录了大量独家题目和最优解分析,这些内容源自笔者多年来“死磕自己”的深入思考。__eol__码农们,你们做好准备在IT名企的面试中脱颖而出、一举成名了吗?这本书就是你应该拥有的“神兵利器”。当然,对需要提升算法和数据结构等方面能力的程序员而言,本书的价值也是显而易见的。
- 作者: 左程云
- 豆瓣评分:8.9【85 人评价】
《剑指Offer:名企面试官精讲典型编程题》
《剑指Offer:名企面试官精讲典型编程题》剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的3个要素(规范性、完整性和鲁棒性),强调高质量的代码除了能够完成基本的功能之外,还能考虑到特殊情况并对非法输入进行合理的处理;解决面试题的思路,总结在编程面试中解决难题的常用思路,如果在面试过程中遇到了复杂的难题,应聘者可以利用画图、举例和分解复杂问题3种方法化繁为简,先形成清晰的思路再动手编程;优化时间和空间效率,介绍如何优化代码的时间效率和空间效率,读完这一章读者将学会常用的优化时间效率及空间换时间的常用算法,从而在面试中找到最优的解法;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力,并通过具体的面试题讨论如何培养知识迁移能力、抽象建模能力和发散思维能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。
- 作者: 何海涛
- 豆瓣评分:9.1【150 人评价】
《编程之美:微软技术面试心得》
《编程之美:微软技术面试心得》收集了约60道算法和程序设计的题目,这些题目大部分在微软的笔试、面试中出现过,有的曾被微软员工热烈地讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题、分析问题、解决问题,寻找更优的解法。《编程之美:微软技术面试心得》内容分为以下几个部分。
游戏之乐:从游戏和其他有趣问题出发,化繁为简,分析总结。
数字之魅:编程的过程实际上就是和数字及字符打交道的过程。这一部分收集了一些好玩的对数字进行处理的题目。
结构之法:汇集了常见的对字符串、链表、队列以及树等进行操作的题目。
数学之趣:列举了一些不需要写具体程序的数学问题,锻炼读者的抽象思维能力。
《编程之美:微软技术面试心得》中绝大部分题目都提供了详细的讲解。每道题目后面还有一至两道扩展问题,供读者进一步钻研。
《编程之美:微软技术面试心得》中还讲述了面试的各种小故事,告诉读者微软需要什么样的技术人才,重视什么样的能力,如何甄别人才,并回答了读者关于IT业面试、招聘、职业发展的疑问。这《编程之美:微软技术面试心得》的很多题目会出现在IT行业的各种笔试和面试中,但本书更深层的意义在于引导读者思考,和读者共享思考之乐、编程之美。
- 作者: 《编程之美》小组
- 豆瓣评分:8.3【3000 人评价】
《编程之法:面试和算法心得》
本书涉及面试、算法、机器学习三个主题。书中的每道编程题目都给出了多种思路、多种解法,不断优化、逐层递进。本书第1章至第6章分别阐述字符串、数组、树、查找、动态规划、海量数据处理等相关的编程面试题和算法,第7章介绍机器学习的两个算法—K近邻和SVM。此外,每一章都有“举一反三”和“习题”,以便读者及时运用所学的方法解决相似的问题,且在附录中收录了语言、链表、概率等其他题型。书中的每一道题都是面试的高频题目,反复出现在最近5年各大公司的笔试和面试中,对面试备考有着极强的参考价值。
全书逻辑清晰、通俗易懂,适合热爱编程、算法、机器学习,以及准备IT笔试和面试,即将求职、找工作的读者阅读。
- 作者: July
- 豆瓣评分:3.3【114 人评价】
豆瓣网友评价极差的一本书。
《高效算法 竞赛 应试与提高必修128例》
本书旨在探讨如何优化算法效率,详细阐述了经典算法和特殊算法的实现、应用技巧和复杂度验证过程,内容由浅入深,能帮助读者快速掌握复杂度适当、正确率高的高效编程方法以及自检、自测技巧,是参加ACM/ICPC、Google Code Jam 等国际编程竞赛、备战编程考试、提高编程效率、优化编程方法的参考书目。
- 作者: [法] Christoph Dürr / [法] Jill-Jênn Vie
- 出版时间是 2018-05 ,暂无豆瓣评分。
趣味性较强的算法书
《我的第一本算法书》
本书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。
本书没有枯燥的理论和复杂的公式,而是通过大量的步骤图帮助读者加深对数据结构原理和算法执行过程的理解,便于学习和记忆。将本书作为算法入门的第一步,是非常不错的选择。
- 作者: [日]石田保辉 / [日]宮崎修一
- 豆瓣评分:9.7【14 人评价】
《算法图解》
本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。
- 作者: [美] Aditya Bhargava
- 豆瓣评分:8.4【730 人评价】
《图解数据结构 —— 使用C++》
本书主要讲解如何将数据结构概念用C 程序语言进行实作。本书将复杂的理论结合图文并茂的解说方式,并搭配丰富的图表及范例介绍,将数据结构中重要的观念及演算方法加以诠释,集中学习焦点。 本书适合数据结构的初学者使用,也可以作为计算机相关专业的教科书。
- 作者: 胡昭民 / 吴灿铭
- 出版时间是 2016-07 ,暂无豆瓣评分。
- 另外,有一本书是 《图解数据结构 —— 使用Java》
- 另外,有一本书是 《图解数据结构 —— 使用Python》
《啊哈!算法》
《啊哈!算法》是一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点,通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。
《啊哈!算法》中涉及的数据结构有栈、队列、链表、树、并查集、堆和图等;涉及的算法有排序、枚举、深度和广度优先搜索、图的遍历,当然还有图论中不可以缺少的四种路径算法、两种生成树算法、割点与割边算法、二分图的匹配算法等。
- 作者: 啊哈磊
- 豆瓣评分:7.8【382 人评价】
《趣学算法》
本书内容按照算法策略分为7章。
第1章从算法之美、简单小问题、趣味故事引入算法概念、时间复杂度、空间复杂度的概念和计算方法,以及算法设计的爆炸性增量问题,使读者体验算法的奥妙。
第2~7章介绍经典算法的设计策略、实战演练、算法分析及优化拓展,分别讲解贪心算法、分治算法、动态规划、回溯法、分支限界法、线性规划和网络流。每一种算法都有4~10个实例,共50个大型实例,包括经典的构造实例和实际应用实例,按照问题分析、算法设计、完美图解、伪代码详解、实战演练、算法解析及优化拓展的流程,讲解清楚且通俗易懂。附录介绍常见的数据结构及算法改进用到的相关知识,包括sort函数、优先队列、邻接表、并查集、四边不等式、排列树、贝尔曼规则、增广路复杂性计算、最大流最小割定理等内容。
本书可作为程序员的学习用书,也适合从未有过编程经验但又对算法有强烈兴趣的初学者使用,同时也可作为高等院校计算机、数学及相关专业的师生用书和培训学校的教材。
- 作者: 陈小玉
- 豆瓣评分:8.3【12 人评价】
《算法的乐趣》
算法之大,大到可以囊括宇宙万物的运行规律;算法之小,小到寥寥数行代码即可展现一个神奇的功能。算法的应用和乐趣在生活中无处不在:
历法和二十四节气计算使用的是霍纳法则和求解一元高次方程的牛顿迭代法;
音频播放器跳动的实时频谱背后是离散傅立叶变换算法;
DOS时代著名的PCX图像文件格式使用的是简单有效的RLE压缩算法;
RSA加密算法的光环之下是朴实的欧几里德算法、蒙哥马利算法和米勒-拉宾算法;
井字棋、黑白棋、五子棋和俄罗斯方块游戏背后是各种有趣的AI算法;
华容道游戏求解的简单穷举算法中还蕴藏着对棋盘状态的哈希算法;
遗传算法神秘不可测,但用遗传算法求解0-1背包问题只用了60多行代码……
一本书带你走进色彩缤纷的算法世界,让你尽享算法的乐趣。
- 作者: 王晓华
- 豆瓣评分:7.8【84 人评价】
《大话数据结构》
本书为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。
本书以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇?一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。
- 作者: 程杰
- 豆瓣评分:7.9【1056 人评价】
《枕边算法书》
本书第1章重点讲解各种常见算法,第2章主要介绍几种相对少见的算法,第3章和第4章探究其他程序员编写的代码,从中总结优秀算法应具备的特点,以及高级程序员应当持有的态度和必须培养的能力。书中以日常对话般浅显的叙述方式,帮助专业开发人员、刚刚踏入软件开发和编程门槛的初学者体会程序设计的创造性和成就感。
- 作者: [韩] 林栢濬
- 豆瓣评分:7.1【16 人评价】
《轻松学算法》
本书共分为12个章节,首先介绍了一些基础的数据结构,以及常用的排序算法和查找算法;其次介绍了两个稍微复杂一些的数据结构——树和图,还介绍了每种数据结构和算法的适用场景,之后是一些在工作与面试中的实际应用,以字符串、数组、查找等为例介绍了一些常见的互联网面试题及分析思路,便于读者了解这些思路,顺利地通过互联网公司的面试;最后介绍了一些常见的算法思想,便于读者对今后遇到的算法问题更轻易地想出解决方案。本书的讲解轻松有趣,易于读者把烦琐、枯燥的算法学习变为有趣、愉快的学习,把被动学习变为主动学习。本书也介绍了一些会在工作面试中用到的算法。对于一些正在学习算法的人来说,本书绝对是可以帮你轻松掌握算法的辅助资料;对于已经了解算法的人来说,可以从本书中了解到这些算法是如何在实际工作中使用的。本书适合即将毕业的学生、初入职场的工程师及想补充基础算法知识的人学习,也适合作为一本互联网公司面试的参考书,更是一本不可多得的便于读者时常补习算法知识的收藏宝典。
- 作者: 赵烨
- 出版时间是 2016-07 ,暂无豆瓣评分。
《图解算法:使用Python》
本书是一本综合讲述数据结构及其算法的入门书,力求简洁、清晰、严谨且易于学习和掌握,并没有追求大而全的数据结构和所有相关的算法,而是选择经典的算法来配合介绍常用的数据结构,包括数组、链表、堆栈、队列以及树和图等。 本书为每个算法及其数据结构均提供了演算的详细图解,并为每个经典的算法都提供了Python语言编写的完整范例程序(包含完整的源代码)。每个范例程序都经过了测试和调试,可以直接在标准的Python解释器中运行,非常适合作为普及型的教科书或自学读物。
- 吴灿铭 (作者), 胡昭民 (作者)
- 出版时间是 2018-09 ,暂无豆瓣评分。
《程序员的数学思维修炼(趣味解读)》
本书是一本专门为程序员而写的数学书,介绍了程序设计中常用的数学知识。本书门槛不高,不需要读者精通很多高深的数学知识,只需要读者具备基本的四则运算、乘方等数学基础知识和日常生活中的基本逻辑判断能力即可。本书拒绝枯燥乏味的讲解,而是代之以轻松活泼的风格。书中列举了大量读者都很熟悉,而且非常有趣的数学实例,并结合程序设计的思维和算法加以剖析,可以训练读者的数学思维能力和程序设计能力,进而拓宽读者的视野,增强职场竞争力。
本书共11章,分别介绍了数据的表示、神奇的素数、递归、排列组合、用余数进行数据分组、概率、复利、数理逻辑、推理、几何图形构造、统筹规划等程序设计中常用的数学知识,从而引导读者深入理解编程中的数学方法和思路。本书包含的实例有结绳记事、孪生素数、梅森素数、哥德巴赫猜想、阶乘、汉诺塔、斐波那契数列、乘法原理、加法原理、字符编码、密码长度、日历中的数学、心灵感应魔术、约瑟夫环、智叟分牛、百枚钱币鼓士气、庄家的胜率、中奖概率、用概率方法求π值、复利的威力、对折纸张、舍罕王的赏赐、三段论、选言推理、假言推理、关系推理、花盆摆放、残缺棋盘、丢失的线条、田忌赛马、背包问题等。
本书适合广大程序设计人员及数学爱好者阅读,尤其适合有一定程序设计经验,但还需要进一步加深对程序设计理解的人员阅读。本书对IT求职人员、信息学竞赛和大学生程序设计竞赛等参赛学员也有很好的参考价值。
- 作者: 周颖
- 豆瓣评分:5.4【88 人评价】
《程序员的算法趣题》
本书是一本解谜式的趣味算法书,从实际应用出发,通过趣味谜题的解谜过程,引导读者在愉悦中提升思维能力、掌握算法精髓。此外,本书作者在谜题解答上,通过算法的关键原理讲解,从思维细节入手,发掘启发性算法新解,并辅以Ruby、JavaScript等不同语言编写的源代码示例,使读者在算法思维与编程实践的分合之间,切实提高编程能力。 本书适合已经学习过排序、搜索等知名算法,并想要学习更多有趣算法以提升编程技巧、拓展程序设计思路的程序员,以及对挑战算法问题感兴趣、爱好解谜的程序员阅读。
-
作者: [ 日] 增井敏克
-
出版时间是 2017-07 ,暂无豆瓣评分。
基于 ruby 语言。