初學算法,你應該這麼玩

很多前端童鞋對算法都有莫名的恐懼,究其原因無非兩點:其一

,對算法不瞭解;其二,沒有找到實際應用場景。

初學算法,你應該這麼玩

一、為什麼學習算法?

這是個很有意思的問題,對算法感興趣的人,不需要問為什麼,算法對他們可能是一種興趣。

曾經有位同事,他刷遍了所有算法題,只要有算法競賽,他都會去參加。當然,也取得了不錯的成績,甚至有了自己的世界排名。

初學算法,你應該這麼玩

一次閒聊中,我拋出了這個問題,他笑著說:沒有為什麼,就是覺得好玩。我一直好奇,為什麼有人會覺得算法好玩,興趣點究竟在哪裡?

其實興趣算一部分,而另一部分則是對編程能力的提升以及思維的擴展。

編程語言雖然該學,但是學習計算機算法和理論更重要,因為計算機語言和開發平臺日新月異,但萬變不離其宗的是那些算法和理論

我們用兩張趣圖來看看差別:

1.學習算法前,你可能這樣:

初學算法,你應該這麼玩

2.學習算法後,你變的機靈了:

初學算法,你應該這麼玩

二、如何入門?

初學算法,你應該這麼玩

那麼如何學習算法呢?這裡我推薦一本書《算法圖解》,超薄的小冊。書中通過一些簡單有趣的例子來闡述算法的應用場景。

之所以選它作為入門,是因為我們可以用很短的時間去翻讀。如果你還是覺得很麻煩,不用怕,我已經幫你準備好了學習筆記

1.算法圖解1 - 二分查找和大O表示法

http://jartto.wang/2018/11/22/algorithm1/

2.算法圖解2 - 數組和鏈表

http://jartto.wang/2018/11/25/algorithm2/

3.算法圖解3 - 遞歸,快排

http://jartto.wang/2018/11/26/algorithm3/

4.算法圖解4 - 散列表

http://jartto.wang/2018/11/27/algorithm4/

5.算法圖解5 - 圖和廣度優先搜索

http://jartto.wang/2018/11/28/algorithm5/

6.算法圖解6 - 狄克斯特拉算法與貪婪算法

http://jartto.wang/2018/11/29/algorithm6/

7.算法圖解7 - 動態規劃

http://jartto.wang/2018/11/29/algorithm7/

書中是圍繞 Python 來寫的,為了更適合前端童鞋閱讀,我已經將相關代碼用 JS 實現了一遍。當然,還是有很多的細節,還需要深入的去理解。但是最起碼,我不再懼怕算法了,反而慢慢有點喜歡了。

算法的重中之重是培養算法思維。如果你能對算法靈活運用,那麼就「大成」了。

三、後面的路怎麼走?

初學算法,你應該這麼玩

入門從來都不是一件簡單的事情,在我們打開這扇神秘大門之後,將會有更多的寶藏需要我們去挖掘。

想要精通算法,在第一本書讀完之後,我們還有更多的目標需要去完成。這裡由淺入深的列舉一些算法經典書籍,供大家參考學習:

1.入門系列:

《算法圖解》《大話數據結構》

2.教科書之類:

《數據結構與算法分析》

3.進階之旅:

《算法導論》

4.針對面試準備:

《劍指 Offer》《編程珠璣》

5.擴展閱讀:

《算法之美》《算法帝國》

6.實踐操作:

《算法競賽入門經典》《力扣題庫》

算法其實有很多經典書籍,我們沒有那麼多的時間去逐一翻閱,但是我們可以有一條明確的學習路線。

這條學習路線就是:入門 - 進階 - 實踐 - 昇華

四、配合實踐

初學算法,你應該這麼玩

其實上面已經提到了,在我們掌握算法思維之後,最為重要的一點就是刷題。相信很多童鞋都聽過 LeetCode ,目前題庫大概有 1000+ 題目,沒事了就去刷刷。

初學算法,你應該這麼玩

當然,刷題也可以由淺入深,先從簡單的入手吧!

初學算法,你應該這麼玩

五、推薦學習

初學算法,你應該這麼玩

JavaScript 算法與數據結構

https://github.com/trekhleb/javascript-algorithms/blob/master/README.zh-CN.md

可視化學習算法的好工具

http://algorithm-visualizer.org/#path=sorting/bucket/basic

互聯網公司最常見的面試算法題有哪些?

https://www.zhihu.com/question/24964987

算法練習,和我一起來刷題吧~

https://github.com/chenfengyanyu/interview

六、總結

初學算法,你應該這麼玩

文章陸陸續續說了這麼多,大體總結如下

1.算法很重要,尤其是對於前端

童鞋;

2.算法學習最好由淺入深,先了解算法思維,再去理解實際應用;

3.從一本小而薄的書開啟,逐步全面的掌握相關知識體系

4.推薦速成路線:《算法圖解》-《劍指 Offer》- LeetCode 刷題 -《算法之美》-《算法導論》;

5.去努力實踐,刷刷題庫,參加參加競賽

好了,就這些吧,祝大家早日搞定算法,帶上算法的王冠,去領略算法之美吧。

1.

2.

3.

初學算法,你應該這麼玩


分享到:


相關文章: