本系列是極客時間中前 Google 工程師王爭《資料結構與演算法之美》專欄的學習筆記,想加強資料結構及演算法能力的同學可以直接購買此專欄,跳轉連結在此
什麼是資料結構?什麼是演算法?
從廣義上講,資料結構就是指一組資料的儲存結構。演算法就是運算元據的一組方法。
資料結構和演算法是相輔相成的。資料結構是為演算法服務的,演算法要作用在特定的資料結構之上。
資料結構是靜態的,它只是組織資料的一種方式。如果不在它的基礎上操作、構建演算法、孤立存在的資料結構就是沒用的
資料結構和演算法知識點彙總
以下是王爭概括的資料結構和演算法知識點彙總
常用及基礎資料結構與演算法
資料結構
陣列、連結串列、棧、佇列、雜湊表、二叉樹、堆、跳錶、圖、Trie 樹
演算法
遞迴、排序、二分查詢、搜尋、雜湊演算法、貪心演算法、分治演算法、回溯演算法、動態規劃、字串匹配演算法
書單推薦
入門
- 《大話資料結構》本書最大特點理論講的有趣不枯燥
- 《演算法圖解》本書最大特點主打圖解,通俗易懂
面試
- 《劍指 offer》本書幾乎包含了所有常見的、經典的面試題
- 《程式設計珠璣》講了很多針對海量資料的處理技巧
- 《程式設計之美》本書作者絕大多數為微軟的工程師,所以裡面演算法題目稍微偏難,面試 Google,Facebook 這樣的公司可以使用此書
針對特定程式語言的教科書
- 《資料結構與演算法分析:C++ 描述》
- 《資料結構與演算法分析:C 語言描述》
- 《資料結構與演算法分析:Java 語言描述》
經典之做
- 《演算法導論》裡面充斥這各種演算法的正確性、複雜度的證明、推導,數學公式比較大,看起來比較吃力
- 《演算法》內容比較友好,更適合初學者入門。但是內容不夠全面,比較動態規劃這麼重要的知識點,本書並沒有講。
殿堂級經典
- 《計算機程式設計藝術》這套書的深度、廣度、系統性、全面性是其他所有資料結構和演算法書籍都無法相比的。
程式碼
宣告
本文更多是本人學習筆記之用,更多詳細的講解級程式碼檢視極客時間專欄《資料結構與演算法之美》