零压力入门算法的顶流畅销书《漫画算法》施展了哪些“魔法”?

陈晓猛

2020-05-18

来,认为算法高深莫测、难以掌握的同学请起立。

好了好了,同学们冷静点,请坐请坐!

博文菌算是半个过来人,永远忘不了自己第一次翻开算法书的情形——

随便翻一页,目之所及不是大篇大篇的代码,

就是乱七八糟的符号公式,

这枯燥的大砖头,配上黑白印刷,

一阵晕眩后,气的我只想睡觉。

相信很多同学都有被一些著作的算法讲解吓到过,

很大原因可能是这些书不适合入门

刚开局就给自己地狱难度,当然会遭受暴击!

相反,想入门算法,只要选对了书,每一天都可以是情人节! 比如,今天的主角《漫画算法:小灰的算法之旅(Python篇)》,

没有满屏的代码,没有古怪的公式符号,

只有色彩丰富的图形萌出天际的漫画故事

能够让你在愉快的学习氛围中,轻松领悟算法思想、理解数据结构,特别适合大家入门学习!

作为去年最畅销的IT新书《漫画算法》的Python篇,它的讲法上延续了上一版的优点,内容也做了升级,

本书重点讲解算法和数据结构的基础知识

像是时间复杂度、二叉树、排序算法等等。

并且书中还特别介绍了面试中的算法职场应用

全书用极具亲和力的方式,把算法“是啥、咋来的、能干啥”讲的透透儿的。就算完全没有计算机背景的同学读起来也不觉得生硬!

比如在介绍基础的 冒泡排序 的时候,

一般书里会这样介绍:

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

然后贴上一张冒泡排序流程图:

看完这一段,各位同学,大家冒泡了吗?

反正博文菌已经开始冒烟了……

再看看《漫画算法(Python版)》中是如何讲解的!

就像汽水中小气泡们会因为轻重而向上浮动,

冒泡排序中的小元素们也会因为大小而向一侧浮动!

是不是简单、生动又清晰!

接下来,流程示例是这样的:

有8个数字组成一个无序数列{5,8,6,3,9,2,1,7},希望按照从小到大的顺序对其进行排序。

按照冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时,交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变。详细过程如下:

这样一来,元素9作为数列中最大的元素,就像是汽水里的小气泡一样,“漂”到了最右侧。

超级细致,是不是一下子就懂了,甚至觉得简单极了?!

冒泡排序是基础中的基础,如果你觉得它没有什么代表性的话,那再来看看《漫画算法》介绍 动态规划 问题时都用了哪些“手段”~

书中以典型问题“挖金矿”为主线,从小灰同学一次失败的面试经验开始:

接下来的讲解中,用大量直观的图形描述来进行解释问题、引导思路:

时不时可爱的小灰和大黄会突然出现,在它们的对话中暗藏着对算法的描述:

在小灰和大黄一步步地引导下,博文菌都能够无障碍的Get到动态规划的基本思想,读完忍不住地惊叹“这还是曾经那个烧脑又可怕的动态规划问题吗?”

其实啊,算法就是这样,很多算法只是外表复杂,但只要方法得当,搞清原理,掌握起来还是很容易的!

《漫画算法:小灰的算法之旅(Python篇)》这本书就针对这些“唬人”的算法,结合漫画带来的轻松氛围,由浅入深地引导我们开动脑筋去思考问题的答案!

说它是零压力入门的算法灵药一点也都不过分,也难怪stormzhang、刘欣、梁勇 、李烨、张洪亮、崔庆才、刘志军等等圈内大佬们都在咔咔力荐!

最后,博文菌再次强烈建议广大爱好Python和算法的朋友们阅读本书!

读者评论

相关专题

相关博文

  • (三)spring cloud云服务架构代码结构详细讲解

    Omaye 2017-11-28

    上一篇我们介绍了spring cloud云服务架构 - particle云架构代码结构,简单的按照几个大的部分去构建代码模块,让我们来回顾一下: 第一部分: 针对于普通服务的基础框架封装(entity、dao、service、co...

    Omaye 2017-11-28
    746 1 4 4
  • Spring Cloud构建微服务架构—配置中心

    醜人 2017-11-17

    Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务...

    醜人 2017-11-17
    311 2 2 2
  •  Spring Cloud构建微服务架构—服务容错保护(Hystrix服务降级)

    Spring Cloud构建微服务架构—服务容错保护(Hystrix服务降级)

    醜人 2017-11-17

    在开始使用Spring Cloud Hystrix实现断路器之前,我们先拿之前实现的一些内容作为基础,其中包括: eureka-server工程:服务注册中心,端口:1001 eureka-client工程:服务提供者,两个实例启动...

    醜人 2017-11-17
    232 2 2 2