零壓力入門算法的頂流暢銷書《漫畫算法》施展了哪些“魔法”?

陳曉猛

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
    764 1 4 4
  • Spring Cloud構建微服務架構—配置中心

    醜人 2017-11-17

    Spring Cloud Config是Spring Cloud團隊創建的一個全新項目,用來為分布式系統中的基礎設施和微服務應用提供集中化的外部配置支持,它分為服務端與客戶端兩個部分。其中服務端也稱為分布式配置中心,它是一個獨立的微服務...

    醜人 2017-11-17
    317 2 2 2
  •  Spring Cloud構建微服務架構—服務容錯保護(Hystrix服務降級)

    Spring Cloud構建微服務架構—服務容錯保護(Hystrix服務降級)

    醜人 2017-11-17

    在開始使用Spring Cloud Hystrix實現斷路器之前,我們先拿之前實現的一些內容作為基礎,其中包括: eureka-server工程:服務注冊中心,端口:1001 eureka-client工程:服務提供者,兩個實例啟動...

    醜人 2017-11-17
    238 2 2 2
十一选五开奖结果云