前言
資料結構和算法這門課一直是計算機專業最基礎的一門課,大學時期掌握的不夠好,畢業後長期寫業務,也沒有特别的花時間好好攻克一下,一直是自己的短闆。這次在極客時間上訂閱了兩門資料結構和算法方面的專欄,一是 Google 工程師王争老師主講的《資料結構與算法之美》專欄,另一篇是前 Facebook 工程師覃超老師主講的視訊專欄《算法面試通關40講》,計劃将這兩個專欄配合着學習,互相補充,并适時輸出學習筆記。這是第一篇學習筆記,主要回答了資料結構和算法是什麼?為什麼要學習?以及怎麼樣學習?這三個問題。
資料結構與算法是什麼?
資料結構與算法是每個計算機專業必修的一門課,這裡分為兩個部分,一個是
資料結構
,一個是
算法
。
資料結構是
一組資料的存儲結構
,算法是
操作資料的一組方法
。資料結構和算法是相輔相成的,資料結構是為算法服務的,算法是作用在特定的資料結構之上。資料結構和算法解決的是如何更省、更快地存儲和處理資料的問題。
為什麼要學習資料結構與算法?
如果把一個優秀程式員需要掌握的技能和金庸武俠小說中的武功技能類比,那麼掌握多少門程式設計語言就如同掌 握了多少招式,如降龍十八掌,打狗棒法等,而資料結構與算法就如同是武林高手的内功,像九陽神功、易筋經一樣。内功就如同基礎,隻有内功紮實,學習任何招式就會事半功倍。
總結下有這幾個理由:
- 進入國内外大廠必備
- 修煉程式設計基礎思維,寫出性能更優的代碼
- 提高學習力,掌握計算機程式的本質
怎麼樣學習資料結構與算法?
#學什麼
這是王争老師繪制的一張幾乎涵蓋了所有資料結構與算法知識點的
知識圖譜
:
學習重點:
- 學習複雜度分析,考量效率和資源消耗的标準。
- 最常用、最基礎的 20 個資料結構與算法,學習他們的:
、來曆
、特點
和适合解決什麼問題
。實際的應用場景
- 資料結構:數組、連結清單、棧、隊列、散清單、二叉樹、堆、跳表、圖、Trie樹。
- 算法:遞歸、排序、二分查找、搜尋、雜湊演算法、分治算法、回溯算法、動态規劃、字元串比對算法。
#怎麼學
- 邊學邊練習,三分學,七分練。将每次講到的資料結構和算法使用自己熟悉的程式設計語言實作一遍,這裡将先使用最常用的 C 語言實作,後面想再分别使用 Objective-C、Swift、JavaScript 實作一遍。
- 多問多思考多互動,在專欄留言區多提問,參與讨論,一起進步。
- 設定切實可行目标,每次學習完輸出學習筆記。
- 心态平和,沉澱知識,反複疊代。
#有關書籍
- 入門:《大話資料結構》、《圖解算法》
- 程式設計語言:《資料結構和算法分析》
- 面試:《劍指offer》、《程式設計之美》、《程式設計珠玑》
- 閑暇閱讀:《算法帝國》、《數學之美》、《算法之美》
- 經典大部頭:《算法導論》、《算法》
- 殿堂級:《計算機程式設計藝術》
分享個人技術學習記錄和跑步馬拉松訓練比賽、讀書筆記等内容,感興趣的朋友可以關注我的公衆号「青争哥哥」。