來,認爲算法高深莫測、難以掌握的同學請起立。
好了好了,同學們冷靜點,請坐請坐!
博文菌算是半個過來人,永遠忘不了自己第一次翻開算法書的情形——
隨便翻一頁,目之所及不是大篇大篇的代碼,
就是亂七八糟的符號公式,
這枯燥的大磚頭,配上黑白印刷,
一陣暈眩後,氣的我只想睡覺。
相信很多同學都有被一些著作的算法講解嚇到過,
很大原因可能是這些書不適合入門,
剛開局就給自己地獄難度,當然會遭受暴擊!
相反,想入門算法,只要選對了書,每一天都可以是情人節! 比如,今天的主角《漫畫算法:小灰的算法之旅(Python篇)》,
沒有滿屏的代碼,沒有古怪的公式符號,
只有色彩豐富的圖形和萌出天際的漫畫故事,
能夠讓你在愉快的學習氛圍中,輕鬆領悟算法思想、理解數據結構,特別適合大家入門學習!
作爲去年最暢銷的IT新書《漫畫算法》的Python篇,它的講法上延續了上一版的優點,內容也做了升級,
本書重點講解算法和數據結構的基礎知識,
像是時間複雜度、二叉樹、排序算法等等。
並且書中還特別介紹了面試中的算法和職場應用!
全書用極具親和力的方式,把算法“是啥、咋來的、能幹啥”講的透透兒的。就算完全沒有計算機背景的同學讀起來也不覺得生硬!
比如在介紹基礎的 冒泡排序 的時候,
一般書裏會這樣介紹:
它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個算法的名字由來是因爲越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
然後貼上一張冒泡排序流程圖:
看完這一段,各位同學,大家冒泡了嗎?
反正博文菌已經開始冒煙了……
再看看《漫畫算法(Python版)》中是如何講解的!
就像汽水中小氣泡們會因爲輕重而向上浮動,
冒泡排序中的小元素們也會因爲大小而向一側浮動!
是不是簡單、生動又清晰!
接下來,流程示例是這樣的:
有8個數字組成一個無序數列{5,8,6,3,9,2,1,7},希望按照從小到大的順序對其進行排序。
按照冒泡排序的思想,我們要把相鄰的元素兩兩比較,當一個元素大於右側相鄰元素時,交換它們的位置;當一個元素小於或等於右側相鄰元素時,位置不變。詳細過程如下:
這樣一來,元素9作爲數列中最大的元素,就像是汽水裏的小氣泡一樣,“漂”到了最右側。
超級細緻,是不是一下子就懂了,甚至覺得簡單極了?!
冒泡排序是基礎中的基礎,如果你覺得它沒有什麼代表性的話,那再來看看《漫畫算法》介紹 動態規劃 問題時都用了哪些“手段”~
書中以典型問題“挖金礦”爲主線,從小灰同學一次失敗的面試經驗開始:
接下來的講解中,用大量直觀的圖形描述來進行解釋問題、引導思路:
時不時可愛的小灰和大黃會突然出現,在它們的對話中暗藏着對算法的描述:
在小灰和大黃一步步地引導下,博文菌都能夠無障礙的Get到動態規劃的基本思想,讀完忍不住地驚歎“這還是曾經那個燒腦又可怕的動態規劃問題嗎?”
其實啊,算法就是這樣,很多算法只是外表複雜,但只要方法得當,搞清原理,掌握起來還是很容易的!
《漫畫算法:小灰的算法之旅(Python篇)》這本書就針對這些“唬人”的算法,結合漫畫帶來的輕鬆氛圍,由淺入深地引導我們開動腦筋去思考問題的答案!
說它是零壓力入門的算法靈藥一點也都不過分,也難怪stormzhang、劉欣、樑勇 、李燁、張洪亮、崔慶才、劉志軍等等圈內大佬們都在咔咔力薦!
最後,博文菌再次強烈建議廣大愛好Python和算法的朋友們閱讀本書!
更多科技資訊請見微信公衆號:博文視點Broadview(微信號:bvbooks)