create by db on 2021-1-11 18:03:22
Recently revised in 2021-1-11 23:05:04闲时要有吃紧的心思,忙时要有悠闲的趣味
前言
作为一只菜鸟前端,数据结构与算法一直是我的一大短板。虽然对于日常搬砖来说,最基本的一些算法就够了,如排序、合并之类。不过总是希望了解一些算法知识及思维方式,而这本算法畅销书《漫画算法》,就被我加购吃灰了。
因为这本来就不算太正经的算法书,读读停停,当闲书一样,不知不觉就看完了。有些小收获。在此分享给大家。
主观评价
首先,这本书的定位是入门书籍,就像它的定位一样,里面讲的大都是些算法初级内容,书里从算法和数据结构的定义和概念说起,再到时间空间复杂度的介绍,到数据结构基础,比如数组,链表,队列。最后才是一些具体的算法问题。
优点
这是一本颇为轻松幽默的一本算法书。从最基础的技术名词开始讲,什么是算法,什么是数据结构,什么是空间复杂度、时间复杂度,图文并茂,非常详细。是我看过的最基础的算法书了(当然我而言没看过几本)。
作为一本新出的畅销书,本书有Java和Python两个版本可供选择,虽然没JS版的,但是已经很友好了。当然,本着买新不买旧的原则,我选了20年5月出版的Python版的——人生苦短,我用Python。
缺点
本书内容过于浅显。本书内容过于浅显。本书内容过于浅显。重要的事情说三遍。
这是本书的优点,也是其缺点。作为一本254页的16开书,里面的的内容不怎么多,图解及代码占据了很大篇幅。
本书基本全是上是其公众号——“程序员小灰”上的文章,并且没有上面全面,不过胜编排仔细,循序渐进,适合算法的入门学习。
适合人群:
本书适合编程小白。就算你对算法完全不了解也没有盖关系。从这本书开始,它能克服你对算法的恐惧。
如果你看过了程序员小灰的很多漫画文章,并且希望支持下作者,支持原创,也可以购买。
推荐指数:★★★☆
内容笔记
第一章 算法概述
本章节主要介绍了什么是算法,数据结构。
随后通过历史故事的方式,层层讲述了时间和空间复杂度的由来。
作为算法的基础,这些东西可能比较枯燥,但一定要有个了解。
第二章 数据结构基础
数据结构有很多,书里面主要介绍了最最最常用的几种:
- 数组
- 链表
- 栈和队列
- 散列表
这里我觉得知识点最多的是栈和队列,栈和队列的出队入队,出栈入栈时间复杂度都是 O(1),并且队列可以用数组做底层,实现循环队列,来固定一个队列占用的存储空间。
第三章 树
树是相对复杂的数据结构了,本章讲述了二叉树,二叉堆,优先队列。
优先队列我之前也没怎么认真学习,最大优先队列就是指无论入队顺序如何,都是当前的最大元素先出队。它底层是用最大堆,最小堆实现的。所以时间复杂度是 O(logn)。
第四章 排序
书里面讲的是冒泡排序,快速排序,桶排序,堆排序。当然还有选择,插入,希尔,归并等。
第五章 面试中的算法
这一章节,就很像剑指 offer 了,提出算法问题,然后针对问题,提出解决思路,并且优化解决思路,最后提出一种或者几种最优的思路。
其中有几题目个比较好:
- 5.9 删去 k 个数字后的最小值:这是一道贪心算法的好例子
- 5.11 求解金矿问题:动态规划的好例子
- 5.12 寻找缺失的整数:二进制位运算的好例子
第六章 算法的实际应用
这里面的几道算法题你可以理解为思路题,我没看太懂,比如:
- Bitmap(位图算法) 来实现给用户定义标签
- LRU 淘汰缓存:在有限的空间中存储对象时,当空间满时,按一定的原则删除原有的对象,以解放空间。
- A星寻路算法:用来宣召两点最短有效路径
个人心得
本书是我的第一本算法书。
作为一本算法入门书籍,《漫画算法》是很优秀的。上面详细讲解了算法入门知识。于我这个算法小白来说,是蛮有帮助的——对于一些算法名词、数据结构的概念以及部分算法的应用有了一定的了解。
算法跟语言无关,但看Python版本之前最好还是了解一下Python的语法知识,不然看不习惯。
本书仅能作为算法入门书籍食用,如果需要系统深入了解算法知识,本书碍于篇幅有限,又主打趣味性,内容偏单薄。
最后感谢作者,向大佬学习、致敬!
总结
路漫漫其修远兮,与诸君共勉。
后记:Hello 小伙伴们,如果觉得本文还不错,记得点个赞或者给个 star,你们的赞和 star 是我编写更多更丰富文章的动力!GitHub 地址
文档协议
db 的文档库 由 db 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于github.com/danygitgit上的作品创作。
本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。