一.爲何要學習數據結構和算法
面試大廠
- 若是本身之後想在大廠發展,數據結構和算法是必須具有的技能,不管是校招仍是社招,大廠都喜歡讓人手撕算法代碼。
業務開發工程師程序員
- 雖然成天都是使用CRUD,可是想要用好,用對類庫,就須要瞭解它們的設計原理(數據結構),時間、空間複雜度分析等。
- 咱們還會使用到各類框架,中間件和底層系統,譬如Spring、RPC框架、消息中間件、Redis等,裏面有不少基礎的數據結構和算法的設計思想。
- 掌握數據結構和算法,對於閱讀源碼,理解背後的設計原理都很是有用。
基礎架構開發工程師面試
- 好比設計RPC框架,想達到開源水平,必須在算法優化,數據存取效率,內存節省等方面比別人更勝一籌。
- 性能好壞是該能力的一個很是重要的評判標準,若是連程序的時間、空間複雜度都不會分析,很難寫出性能較優的代碼。
中年危機算法
- 不少人認爲,程序員 35 歲以後很容易陷入瓶頸,被行業淘汰。其實就是說若是你不懂數據結構與算法, 35 歲以後很難再有提高,也容易被年輕程序員所取代。數據結構與算法就是一個可積累的技能。在金庸小說裏面,一我的練降龍十八掌,一我的練全真教內功,剛開始,練內功的被吊打,十年後依然被吊打,但二十年後,降龍十八掌就怎麼也打不過練內功的了,算法和數據結構就是內功,降龍十八掌就是各類框架,再怎麼熟悉框架,也不如瞭解它內部的算法和數據結構。
二.數據結構是什麼
定義:是計算機存儲、組織數據的方式,指相互之間存在一種或多種特定關係的數據元素的集合。數據結構
三.經常使用的數據結構
四.算法是什麼
就是操做數據的一組方法,數據結構和算法是相輔相成的,數據結構是爲算法服務的,算法要做用在特定的 數據結構之上。架構
五. 常見的算法
學習這些內容主要從這幾個方面的入手:框架
是要學習它的「來歷」「自身的特色」「適合解決的問題」以及「實際的應用場景。數據結構和算法