14

想学习数据结构和算法,推荐给你 10 本优质书单

 3 years ago
source link: http://www.itwanger.com/java/2020/09/14/java-shujujiegou-suanfa.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

有个读者 diao 要我推荐数据结构和算法方面的书,我觉得很有必要给大家普及一下,因为算法和数据结构实在是太特么重要了——就好像我们人类离不开氧气,绿色植物离不开二氧化碳一样!

请肆无忌惮地点赞吧,微信搜索【 沉默王二 】关注这个在九朝古都洛阳苟且偷生的程序员。

本文  GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题。

除了 diao,还有个妹子在后台留言给我,也要推荐一波数据结构和算法方面的书籍:

fMV7Rv.png!mobile

鉴于此,我没吃没喝耗了两天的时间,终于整理好了。除此之外,我还充了百度网盘的会员和 CSDN 的会员(好下载资源),也问了好几个数据结构和算法方面的专家,好验证我的书单是否值得信赖——他们异口同声的肯定了我的付出。

可能有些读者会有这样的疑惑,数据结构有什么用?学习算法有必要吗?那我先来装模作样的回答一下这两个问题。

在计算机领域,通常要处理这样的问题:

1)如果将数据存储到计算机当中。

2)用什么方法来解决这个问题。

数据是一切能输入到计算机中的信息综合,结构是指数据之间的关系,那数据结构就是将数据和它们之间的关系存储到计算机当中。怎么实现存储呢?就需要选择合适的算法,效率才会更高。

Pascal 之父、结构化程序设计的先驱 Niklaus Wirth 有一本非常著名的书,叫作《 算法 + 数据结构 = 程序 》,可见,数据结构和算法对于程序设计来说,真的非常重要。

数据结构和算法,就像操作系统和计算机网络一样,看似离我们很近,但似乎又很远。

之所以近,是因为如果不懂数据结构和算法,基本上面试就过不了,不管是校招还是社招。之所以远,是因为实际工作中,如果不涉及到操作系统、搜索引擎、网络调度等等方面的底层业务,如果不考虑性能,似乎根本用不到,只要把编程语言封装好的 API 调用得当,只要把框架用的熟练,照样能把代码写得 66 的。

作为一名在编程领域摸爬滚打了十多年的老鸟,我必须郑重其事地提醒一下在座的各位。

如果你是大学生,一定要学习数据结构和算法,否则面试碰壁的时候你会后悔的,除非你打算在小公司混一辈子。

如果考研的话,数据结构也是必考科目。

如果你已经参加工作,想要摆脱 CRUD 的标签,也一定要学习数据结构和算法,否则只能停留在 助理工程师和工程师 的阶段,无法更进一步。

除此之外,掌握数据结构和算法,还有助于阅读源码和理解其背后的设计思想。

明白了数据结构和算法的重要性之后,我相信读者朋友们已经迫不及待、摩拳擦掌、跃跃欲试了,“请告诉我们该阅读哪些书籍吧!”

第一本,《大话数据结构》

yi2Erq.png!mobile

《大话数据结构》 这本书最大的特点是,它把理论讲得很有趣,不枯燥。读技术书最大的烦恼不是这本书经典不经典,而是能不能看的进去,能看的进去,学到了,这本书就是好书。如果看不进去,哪怕是再经典的书,对学习的能都没有一丁点的帮助,对吧?

网络上对这本书的评价褒贬不一,但总体销量还是很不错的,作者也是一名老程序员了。书中的示例用的 C 语言。

第二本,《算法图解》

IJBje2E.png!mobile

就像《算法图解》(代码使用 Python 语言实现的)这本书副标题写的那样,“像小说一样有趣的算法入门书”,主打“图解”,通俗易懂,学习起来就轻松多了,对吧?

通过《大话数据结构》和《算法图解》两本书的学习,我相信读者朋友们一定能够入门数据结构和算法了。如果还想更系统、更深入地学习,请继续往下看。

第三本,《数据结构和算法分析》

ya2UBn7.png!mobile

黑皮书,一眼看上去,就知道是一本经典书,对吧?《数据结构和算法分析》这本书的作者也非常用心,例子不仅有 Java 版的,还有 C 版和 C++ 版的。

这就解决了很多读者朋友们的烦恼,我不擅长 C 啊,我就想看 Java 版的,读者 giao 就要求我给他推荐一些 Java 版的书籍。

第四本,《剑指 offer》

bEzmemj.png!mobile

这本书剖析了 80 个典型的编程面试题,如果能搞懂这本书里的内容,应付一般公司的面试应该不成问题。

直白点说,学习算法和数据结构会非常辛苦,那既然付出了这么多心血,我们的目的就很明确,获得一份更好的工作岗位,《剑指 offer》这本书一定能够帮助到我们。

刷题的话,可以选择牛客网或者力扣,如果是 Java 程序员的话,用 Java 刷题就行了。

牛客网:

https://www.nowcoder.com/ta/coding-interviews

力扣:

https://leetcode-cn.com/problemset/lcof/

认认真真看完这四本书,如果能够一个一个例子做下来,我相信读者朋友们就可以拍着胸脯自信地说,“数据结构和算法,我算是拿下了!”

“一千个读者,就有一千个哈姆雷特”,不同的读者在读同一本书的时候,感受也是不同的。同理,一个读者在读同一个主题下不同的书时,收获也会大有不同。

那我觉得,很有必要再推荐一些其他方面的书,供不同的读者选择。

第五本,《趣学数据结构》

yEbuuuF.png!mobile

讲解比较生动,用 C++ 描述的,适合基础一般的初学者。作者陈小玉是我们河南的,还写过另外一本算法方面的书,同样很适合初学者。

iqiqEjQ.png!mobile

第六本,《啊哈算法》

yAbUvav.png!mobile

一本有趣的算法入门书,C 语言实现的,没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点。

第七本,《漫画算法:小灰的算法之旅》

VbAB7rJ.png!mobile

用漫画的形式讲述了算法和数据结构的基础知识、复杂多变的算法面试题目及算法的实际应用场景。出了两版,一版 Python,一版 Java。

第八本,《程序员代码面试指南:IT 名企算法与数据结构题目最优解》

BFvYbqe.png!mobile

这是一本程序员代码面试”神书”!书中对 IT 名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现,选取将近 300 道真实出现过的经典代码面试题,”刷”完这书,就是”题王”!

同样可以上牛客网上刷题:

https://www.nowcoder.com/ta/programmer-code-interview-guide

第九本,《算法》

ZbIreq2.png!mobile

这是一本非常适合于自学以及作为教材的算法书,特点有:基础非常全面、图示清晰易懂、数学要求低。代码是通过 Java 实现的,虽然是一本大部头书,但难懂的话不过。

第十本,《数据结构与算法之美》

严格意义上说,这不是一本书,它是 XX 时间(虽然很隐晦,但还是打钱吧)平台推出的付费栏目。推荐原因我就不多说了,书籍看累了,是一种选择。

b6RVbab.png!mobile

就先推荐这十本吧,够大家学习一段时间了。最后,再来说一说学习数据结构和算法的方法吧,简单来说,就两点:

1)选择一本合适的书

这个问题,我已经帮大家解决了,不论你选择哪一本,最重要的是开始,不要犹豫,早就是优势。

2)编程实现和应用

理解不代表会用,对吧?只有自己亲自动手去实现,去反复的练习,才能真正地掌握。第一次练习可能不记不住,那就第二次、第三次,不要急躁,给自己一点时间和耐心。

如果你手里有点闲钱,建议直接购买纸质书阅读;如果手头确实紧张,钱都给对象买礼物了,那下面这个百度链接也许可以缓解一下你的资金压力:

7feUNr.png!mobile

下载链接:https://pan.baidu.com/s/1rB-CCjjpKPidOio7Ov_0YA 密码:g5pl

最后,希望二哥这些诚恳的建议能够给大家一点点帮助!love peace and sleep!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK