一、什麼是數據結構?什麼是算法?
從廣義上講,數據結構就是指一組數據的存儲結構。算法就是操作數據的一組方法。
數據結構和算法是相輔相成的。數據結構是爲算法服務的,算法要作用在特定的數據結構之上。
二、爲什麼學習數據結構和算法?
- 面試(迫於無奈...)。
- 掌握數據結構和算法,不管對於閱讀大神框架或源碼還是理解其背後的設計思想都是很有用的。
- 對於編程有追求,那就不要只會寫湊合能用的代碼(只考慮功能)。性能的好壞也是評判代碼質量的一個非常重要的標準。
- 掌握了數據結構和算法,你看待問題的深度、解決問題的角度就會完全不一樣。站在巨人的肩膀上可以看的更高、更遠。
三、如何學習數據結構和算法?
我們學習數據結構和算法,並不是爲了死記硬背幾個知識點。我們的目的是建立時間複雜度、空間複雜度意識,寫出高質量的代碼,能夠設計基礎架構,提升編程技能,訓練邏輯思維。所以學習數據結構和算法的過程中,不要死記硬背,而是要學習它的"來歷"、"自身特點"、"適合解決問題"、"實際應用場景"。要多辯證地思考,多問爲什麼。並且要掌握一個最最重要的技能--複雜度分析!!!
四、數據結構和算法知識點圖
五、下面列出一些常用的數據結構和算法
- 10 個數據結構:數組、鏈表、棧、隊列、散列表、二叉樹、堆、跳錶、圖、Trie 樹;
- 10 個算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動態規劃、字符串匹配算法。