来了,来了!你们要的写给 Java 程序员看的算法学习指南! | 算法必看系列二十

简介: 这篇文章我会推荐一些关于算法学习的书籍以及资源。希望对大家学习算法有帮助!

原文链接

先占个坑,说一下我觉得算法这部分学习比较好的规划:

  1. 未入门(对算法和基本数据结构不了解)之前建议先找一本入门书籍看;
  2. 如果时间比较多可以看一下我推荐的经典部分的书籍,《算法》这本书是首要要看的,其他推荐的神书看自己时间和心情就好,不要太纠结。
  3. 如果要准备面试,时间比较紧的话,就不需要再去看《算法》这本书了,时间来不及,当然你也可以选取其特定的章节查看。我也推荐了几本不错的专门为算法面试准备的书籍比如《剑指 offer》和《程序员代码面试指南》。

书籍推荐

先来看三本入门书籍,这三本入门书籍中的任何一本拿来作为入门学习都非常好。我个人比较倾向于 《我的第一本算法书》 这本书籍,虽然它相比于其他两本书集它的豆瓣评分略低一点。我觉得它的配图以及讲解是这三本书中最优秀,唯一比较明显的问题就是没有代码示例。但是,我觉得这不影响它是一本好的算法书籍。因为本身下面这三本入门书籍的目的就不是通过代码来让你的算法有多厉害,只是作为一本很好的入门书籍让你进入算法学习的大门。

入门

image.png

我的第一本算法书[1]

(豆瓣评分 7.1,0.2K+人评价)
一本不那么“专业”的算法书籍。和下面两本推荐的算法书籍都是比较通俗易懂,“不那么深入”的算法书籍。我个人非常推荐,配图和讲解都非常不错!
image.png

《算法图解》[2]

(豆瓣评分 8.4,1.5K+人评价)
入门类型的书籍,读起来比较浅显易懂,非常适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富,图文并茂,以让人容易理解的方式阐释了算法.读起来比较快,内容不枯燥!

image.png

啊哈!算法[3]

(豆瓣评分 7.7,0.5K+人评价)
和《算法图解》类似的算法趣味入门书籍。

经典

image.png

《算法 第四版》[4]

(豆瓣评分 9.3,0.4K+人评价)
我在大二的时候被我们的一个老师强烈安利过!自己也在当时购买了一本放在宿舍,到离开大学的时候自己大概看了一半多一点。因为内容实在太多了!另外,这本书还提供了详细的 Java 代码,非常适合学习 Java 的朋友来看,可以说是 Java 程序员的必备书籍之一了。

再来介绍一下这本书籍吧!这本书籍算的上是算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。

“下面这些书籍都是经典中的经典,但是阅读起来难度也比较大,不做太多阐述,神书就完事了!推荐先看 《算法》,然后再选下面的书籍进行进一步阅读。不需要都看,找一本好好看或者找某本书的某一个章节知识点好好看。”

image.png

编程珠玑[5]

(豆瓣评分 9.1,2K+人评价)
经典名著,被无数读者强烈推荐的书籍,几乎是顶级程序员必看的书籍之一了。这本书的作者也非常厉害,Java 之父 James Gosling 就是他的学生。

很多人都说这本书不是教你具体的算法,而是教你一种编程的思考方式。这种思考方式不仅仅在编程领域适用,在其他同样适用。
image.png

《算法设计手册》[6]

(豆瓣评分 9.1 , 45 人评价)
Teach Yourself Computer Science[7] 强烈推荐的一本算法书籍。
image.png

《算法导论》[8]

(豆瓣评分 9.2,0.4K+人评价)
image.png

《计算机程序设计艺术(第 1 卷)》[9]

(豆瓣评分 9.4,0.4K+人评价)

面试

image.png

《剑指 Offer》[10]

(豆瓣评分 8.3,0.7K+人评价)
这本面试宝典上面涵盖了很多经典的算法面试题,如果你要准备大厂面试的话一定不要错过这本书。

《剑指 Offer》 对应的算法编程题部分的开源项目解析:CodingInterviews[11]

image.png
image.png

程序员代码面试指南:IT 名企算法与数据结构题目最优解(第 2 版)[12]

(豆瓣评分 8.7,0.2K+人评价)
题目相比于《剑指 offer》 来说要难很多,题目涵盖面相比于《剑指 offer》也更加全面。全书一共有将近 300 道真实出现过的经典代码面试题。
image.png

编程之美[13]

(豆瓣评分 8.4,3K+人评价)
这本书收集了约 60 道算法和程序设计题目,这些题目大部分在近年的笔试、面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。

参考资料

[1]我的第一本算法书: https://book.douban.com/subject/30357170/

[2]《算法图解》: https://book.douban.com/subject/26979890/

[3]啊哈!算法: https://book.douban.com/subject/25894685/

[4]《算法 第四版》: https://book.douban.com/subject/10432347/

[5]编程珠玑: https://book.douban.com/subject/3227098/

[6]《算法设计手册》: https://book.douban.com/subject/4048566/

[7]Teach Yourself Computer Science: https://teachyourselfcs.com/

[8]《算法导论》: https://book.douban.com/subject/20432061/

[9]《计算机程序设计艺术(第1卷)》: https://book.douban.com/subject/1130500/

[10]《剑指Offer》: https://book.douban.com/subject/6966465/

[11]CodingInterviews: https://github.com/gatieme/CodingInterviews

[12]程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版): https://book.douban.com/subject/30422021/

[13]编程之美: https://book.douban.com/subject/3004255/

来源 | 五分钟学算法
作者 | 程序员小吴

相关文章
|
11天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
26 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
1天前
|
算法 搜索推荐 程序员
程序员常用的几种算法
程序员常用的几种算法
5 0
|
1天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
20 4
Java并发编程学习11-任务执行演示
|
2天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
2天前
|
Java 程序员 图形学
程序员教你用代码制作飞翔的小鸟--Java小游戏,正好拿去和给女神一起玩
《飞扬的小鸟》Java实现摘要:使用IntelliJ IDEA和JDK 16开发,包含小鸟类`Bird`,处理小鸟的位置、速度和碰撞检测。代码示例展示小鸟图像的加载、绘制与旋转。同时有`Music`类用于循环播放背景音乐。游戏运行时检查小鸟是否撞到地面、柱子或星星,并实现翅膀煽动效果。简单易懂,可直接复制使用。
|
3天前
|
数据库连接
java+ssm+vue代码视频学习讲解
java+ssm+vue代码视频学习讲解
6 0
|
11天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
11天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
12天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
20 1
|
12天前
|
消息中间件 监控 安全
【JAVAEE学习】探究Java中多线程的使用和重点及考点
【JAVAEE学习】探究Java中多线程的使用和重点及考点