演算法學習思路

Jartto發表於2019-04-09

很多前端童鞋對演算法都有莫名的恐懼,究其原因無非兩點:其一,對演算法不瞭解;其二,沒有找到實際應用場景。

一、為什麼學習演算法?

這是個很有意思的問題,對演算法感興趣的人,不需要問為什麼,演算法對他們可能是一種興趣。曾經有位同事,他刷遍了所有演算法題,只要有演算法競賽,他都會去參加。當然,也取得了不錯的成績,甚至有了自己的世界排名。

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

其實興趣算一部分,而另一部分則是對程式設計能力的提升以及思維的擴充套件。

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

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

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

before

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

after

二、如何入門?

那麼如何學習演算法呢?這裡我推薦一本書《演算法圖解》,超薄的小冊。書中通過一些簡單有趣的例子來闡述演算法的應用場景。之所以選它作為入門,是因為我們可以用很短的時間去翻讀。

如果你還是覺得很麻煩,不用怕,我已經幫你準備好了學習筆記

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

演算法的重中之重是培養演算法思維。

當你能夠對演算法活學活用之後,那麼你就「大成」了。

三、後面的路怎麼走?

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

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

1.入門系列: 《演算法圖解》《大話資料結構》

2.教科書之類: 《資料結構與演算法分析》

3.進階之旅: 《演算法導論》

4.針對面試準備: 《劍指 Offer》《程式設計珠璣》

5.擴充套件閱讀: 《演算法之美》《演算法帝國》

6.實踐操作: 《演算法競賽入門經典》《力扣題庫》

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

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

四、配合實踐

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

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

五、推薦學習

1.JavaScript 演算法與資料結構

2.視覺化學習演算法的好工具

3.網際網路公司最常見的面試演算法題有哪些?

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

六、總結

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

  1. 演算法很重要,尤其是對於前端童鞋;
  2. 演算法學習最好由淺入深,先了解演算法思維,再去理解實際應用;
  3. 從一本小而薄的書開啟,逐步全面的掌握相關知識體系;
  4. 推薦速成路線:《演算法圖解》-《劍指 Offer》- LeetCode 刷題 -《演算法之美》-《演算法導論》;
  5. 去努力實踐,刷刷題庫,參加參加競賽;

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

相關文章