首先掌握常用的、基礎的。然後在此基礎上往進行擴充套件學習。
常用的、基礎的資料結構和演算法有20個。
資料結構:陣列、鍊錶、棧、佇列、雜湊表、二叉樹、堆、跳表、圖、trie樹
演算法:遞迴、排序、二分查詢、搜尋、雜湊演算法、貪心演算法、分治演算法、回溯演算法、動態規劃、字串匹配演算法。
這些需要一一攻克。
多思考,多想。往往需要靈魂三問,是什麼?有什麼用?怎麼用?用來解決哪些實際問題?
當然了,你也可以思考一下為啥要學習這門課程?
什麼是資料結構?什麼是演算法?
廣義:資料結構就是一組儲存結構。演算法就是運算元據的一組方法
狹義:資料結構和演算法,是指某些特殊的資料結構和演算法,比如:佇列、棧、堆、二分查詢、動態規劃等。這些都是前人的智慧型結晶,我們可以直接拿來用的。這些經典的資料結構和演算法,都是前人從很多實際操作場景中抽象出來的,經過非常多的求證和檢驗,可以高效的幫助我們解決很多實際的開發問題
這個問題非常經典,還是第一次看到這個問題。
資料結構和演算法有什麼關係,為什麼大部分書籍都把這兩個東西放到一塊來講呢?
資料結構和演算法是相輔相成的,資料結構是為演算法服務的,演算法需要作用在特定的資料結構上。因此,無法孤立資料結構來講演算法,也無法孤立演算法來講資料結構
例如:陣列具有隨機訪問的特點,常用的二分查詢演算法需要陣列來儲存資料。如果選擇鍊錶這種資料結構,二分查詢法就無法工作了,因為鍊錶並不支援算計訪問
學習資料常用的、基礎的資料結構只用有高中數學水平即可。
學習的重點在什麼地方?
資料結構和演算法,很多人都很頭疼,我也一樣,裡面的東西太多了,又不知道從何處下手學習,往往事倍公半。首先需要梳理一下有哪些知識點,應該先學什麼,後學什麼,在對照你屬於哪乙個階段,針對性的進行學習
想要學好資料結構和演算法,首先要掌握乙個資料結構與演算法中最重要的乙個概念--複雜度分析。
這個概念有多重要呢?可以這麼說,它幾乎佔了資料結構和演算法的半壁江山,是資料結構和演算法的精髓。
資料結構和演算法解決的是如何更省、更快地儲存和處理資料的問題,因此,我們就需要乙個考量效率和資源消耗的方法,這就是複雜度分析方法。所以你只有掌握了資料結構和演算法的特點,用法,但是沒有學會複雜度分析方法,那就相當於只知道操作口訣,而沒有掌握心法。只有心法了然於心,才能無招勝有招。
資料結構和演算法涵蓋的知識點:
在學習的過程當中,不要死記硬背,不要為了學習而學習,而是要學習它的「來歷」、「自身的特點」、「適合解決哪些問題」以及「實際應用場景」。
一些學習技巧:
1、邊學邊練,適度刷題
可以適度刷題,但不要花費太多時間,學習的目的還是掌握,然後應用
2、多問、多思考、多互動
3、打怪公升級法
設立乙個切實可行的目標,不斷的點亮你的技能點。不可能一口吃個胖子
4、知識需要沉澱,不要試圖一下子掌握所有
學習是乙個反覆迭代的過程,不斷沉積的過程
摘自:資料結構與演算法之美 -- 王爭
資料結構與演算法 01 如何學習資料結構與演算法
過於學術的概念定義比較抽象,難以理解。我們從廣義和狹義兩個層面,來理解資料結構與演算法這兩個概念。從廣義上講,資料結構就是指一組資料的儲存結構 怎麼放 演算法就是運算元據的一組方法 怎麼用 我們以圖書館的場景為例來進一步理解 圖書館書籍量十分巨大,首先要分類設定閱覽室,譬如社科類 科技類 報刊類等。...
資料結構之如何高效學習資料結構與演算法
資料結構我覺得就是指一組資料的儲存結構 演算法就是運算元據的一組方法 資料結構是為演算法服務的,演算法要作用在特定的資料結構之上 學會複雜度分析。相當於武功的心法 但是不用全掌握,要掌握重點 這裡面有 10 個資料結構 陣列 鍊錶 棧 佇列 雜湊表 二叉樹 堆 跳表 圖 trie 樹 10 個演算法...
怎麼學習資料結構和演算法?
1 資料結構是指一組資料的儲存結構 2 演算法就是運算元據的方法 3 資料結構和演算法是相輔相成的,資料結構是為演算法服務的,而演算法要作用在特定的資料結構之上 資料結構和演算法解決的是如何更省 更快地儲存和處理資料的問題,因此,我們就需要乙個考量效率和資源消耗的方法,這就是複雜度分析方法。在學習資...