1、程序员算法书籍推荐

《Refactoring》(重构)— 入门级

豆瓣链接
《Refactoring》:改善已有代码的设计,这本的作者是Marin Fowler,他是一位非常了不起的程序员,无论是对代码设计还是对并发系统的认识。(如果有想了解并发思想的朋友可以去访问他的网站:https://www.martinfowler.com/
这本书我认为是每个程序员入门必看的一本书,无论是项目设计还是模块设计都有很好启迪作用。并且许多大厂都把这种代码思想嵌入到了代码规范中。但是我觉得自己深入理解吃透这本书对以后的发展是百利而无一害的。
这本书大致讲得是代码书写一些规范和一些不好的习惯(虽然是针对java语言,但是我觉得对任何一门语言都适用),以及一些重构思想和设计框架的思想(这点非常重要,在现在这种快节奏,只追求量不追求质的环境下,一定要有一颗明确心,程序员做得是设计的活不是搬砖的活。不停思考怎么重构,不停思考自己代码中的不足,不停思考不同需求不同量级的不同设计思路。)所以不论学什么,不管是算法还是其他方向,只要是程序员,《Refactoring》都是必读的经典。也许有人会问,算法不就是排序啊、组合啊或者一些数学公式计算,为什么要先读这本书呢?因为算法也是程序,只要是程序就必须要有设计、重构参与其中,才能写出完美的代码。一旦算法难度到达一定复杂度,设计和重构可能占你工作的大头,反而思考算法本身的量只占很小的一部分了。
我自己的读后感:虽然这本书不是完全符合现在项目设计,但是其中绝大多数思想还是很值得借鉴的。比如说不停重构是一个程序最健康发展的过程,因为谁都不能第一次就写出完美的代码,所以需要不停重构使它能跟上不停变化的需求和与其他模块进行适配。还有就是分层思想,很多代码或模块都会用switch等关键字实现不同方法的调用,很可能一个方法好多个switch或者需求一点改变会涉及大量改动,这都是糟糕设计的表现!直接用type判断或者switch甚至于if,可能一时爽,瞬间搞定了需求,但是后患无穷。并且这对自己是很不负责的行为,因为你失去了一个重构、思考和设计机会。想知道怎么思考和设计,仔细阅读这本书。(如果有对着书想法和问题欢迎讨论)

《算法导论》 — 入门级到中级

豆瓣链接
这边书是我大学算法课学的一本书,但当时因为老师说有一些难度太大,都没有学习。但是工作之后,当我再次拿起这本还是回味不穷,而当时不太懂最后一些章节,随着工作积累也有了不一样的理解。
这部书无论是前几章对于复杂度的讲解,还是中间几章对于排序算法的讲解(面试必问)都是很好理解算法的开始。其中一些算法思想是这本书的精华,所以我们在学习是不但要学习这些排序算法实现,还要了解这些算法设计思想,因为很多问题都会借鉴到这些思想。那些很难的算法题,能解出来靠的不仅仅是你的聪明才智,还有一些思考和积累,后面我会对于一些排序算法思想以及一些常见面试题或算法题进行统一解析。所以我个人认为学习算法或者当一名程序员最重要是思考,知识会过时,技术会被淘汰,但是你的思维习惯和思考问题能力会收益终身。推荐一些算法网站,算是一些入门和进阶练习题,帮助了解算法:https://leetcode.com/https://www.hackerrank.com/https://projecteuler.net/
我自己的读后感:边看书边写代码效果更佳,后面我会一章章解析这本书,并且会将一些相关的算法题和问题一起介绍。啃完这本书的感觉就是面试算法就是毛毛雨,而且对于算法有了很深的认识,但其实还是知道只是毛毛雨,因为啃完这本书才算进入算法大门,但是这里思想还是很重要的。但是需要看这本书有一定数学基础,特别是数论和组合,这样才能在这条路走得更远一点,我也在学习路上,一起加油!这本书中我觉得最精华的不是各种算法,而是各种解决一些算法问题思维方式和分析处理方式,这些才是精华,这些才是你以后在算法世界中披荆斩棘的利剑。这其中思想已经足够解决市面上绝大多数算法题了。

《计算机程序设计艺术》 — 中级到高级

豆瓣链接
未读完,以后在更。

还有一些很好的书,等我赏析完《算法导论》,后续会持续更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frank_Yang1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值