首頁 >常見問題 >資料結構怎麼自學

資料結構怎麼自學

coldplay.xixi
coldplay.xixi原創
2020-08-22 10:21:086872瀏覽

資料結構自學的方法:首先第一階段認識資料結構,了解基本組成及效能;然後第二階段深入資料結構,掌握相關特性,會寫程式碼;最後第三階段檢索資料結構,將所學知識點運用到實際問題中。

資料結構怎麼自學

資料結構自學的方法:

第一階段:認識資料結構

第一步:學習它就應該知道陣列、鍊錶、堆疊、佇列、散列表、跳表、圖、樹、堆疊、字典樹10種資料結構用來幹什麼,為什麼,怎麼做,小鹿建議去看一些基礎的資料結構書籍或借助百度和谷歌簡單了解一下每種資料結構用來幹什麼,為什麼,怎麼做就可以了,然後可以簡單做一下筆記和部落格。

第二步:每種資料結構都有它的優缺點和效能的好壞,那我們以什麼標準來衡量資料結構與演算法的效能好快呢?那第二步就學習時間複雜度、空間複雜度相關的複雜度分析的內容,這部分內容至關重要,因為後邊要學到的資料結構與演算法都要有一個衡量效能標準的,為了能夠不同的問題解決選擇出效能最優的資料結構和演算法。

第二階段:深入資料結構

#第一步:寫入程式碼。上邊最基本的十種資料結構相關特性和使用條件都做筆記了,然後我們從頭開始對每種資料結構進入深入研究,首先資料結構涉及到的操作,例如增、刪、改、查等操作要自己實作一遍,在機器上運行一遍,寫程式碼的時候一定要注意以下幾點:邊界條件、指標、程式碼的規格。

這樣會使你更加的對程式碼有顆敬畏之心,每次寫程式碼都要認真對待,如果機器上寫程式碼沒問題了,可以自己透過在筆記本上用筆手寫親自實現一遍,有利於你加深你的程式碼邏輯的理解。

第二步:在第一階段中我們了解到效能的衡量標準,那麼下一步就再回過頭來對10種最常用的幾種資料結構涉及到的操作進行性能分析。你可能會問,為什麼不邊寫程式碼邊進行效能分析呢?我覺得分階段的好處就是能集中解決問題,寫程式碼就是要鍛鍊寫程式碼的思考邏輯能力,效能分析就是要提升自己的分析能力,效能分析完成之後再寫的程式碼有哪些可以進行最佳化改進的。這段期間你會遇到各種問題,遇到問題怎麼做,我通常會去百度或谷歌借助別人寫的文章進行總結記錄到筆記本上。

第三步:每種資料結構的效能分析完成之後,再進行對每個資料進行深入。第一階段我推薦的是看一些基礎的書籍,牽涉到的知識層次不深。但是我們還是要至少手中有一本具有權威性深入解析的資料結構書籍才能對一些概念有深入的理解。基礎書籍畢竟是讓你入門的嘛,我們可以透過這些權威性高、內容全面的對已學到的資料結構知識點進行查缺補漏。

第四步:單獨的深入學習真的很枯燥雜麼辦,那麼我們就實際生活中的例子去分析,例如猜數字遊戲、0/1背包問題、走迷宮、八皇后問題以及滿減湊單問題等。如猜數字遊戲,我們可以想想怎麼才能在最短的時間內猜到正確的數字呢,可能你會想到使用二分查找。那好了,我們問一下自己二分查找存在的問題,這個過程中一定要多問自己為什麼,只有這樣你的知識層次才會得到擴展,比如二分查找如果數據中有重複數據怎麼解決?

我還是要強調一下,一定要多問自己為什麼,因為從心理學上來講,人的大腦符合最小阻力原則,就是思考的事情最不喜歡做,所以這裡我們要逆著來,才能進一步進行突破。如果你覺的上述兩個階段沒有問題了,我們就進行下面的第三階段檢索資料結構。

第三階段:檢索資料結構

第一步: 這時你可能學的非常多的關於資料結構的內容,但是很難運用,那怎麼能夠在實際實際問題中運用起來呢?我們前邊已經將零碎的知識點整理到筆記本了?接下來該怎麼做呢?我們可以藉助心智圖,對知識體系化整理,無論是複習鞏固都利於我們進一步加強。

第二步:上述整理成體系之後完畢之後,然後去谷歌或百度搜尋一下有明確解決方案的實際問題拿來進行分析學習,你到這些實際專案中會發現,許多問題涉及多個資料結構問題,我們前邊解決的還不過是針對單一的資料結構,那就嘗試著自己將資料結構之間建立聯繫,例如數組和鍊錶,每種資料結構都有優缺點,你在學習的過程中你會發現一個資料結構的優點正是另一資料結構的缺點,數組在記憶體空間是連續的,對CPU快取友好,而鍊錶在記憶體中是零碎記憶體空間,對CPU快取不友好,但是鍊錶可以動態擴容而數組不可以。

再例如為了提高程式的效率不得不用消耗更多的記憶體空間的資料結構去代替另一資料結構,如果記憶體緊張,對執行效率要求不高的話,我們又用省記憶體執行效率稍有不高的資料結構去代替佔記憶體大而執行快的資料結構。

第三步:學會將實際問題轉換成所學的資料結構。怎麼轉化呢?如:假如你是工程師,要對鍊錶實作快取的演算法進行最佳化你會怎麼解決?我們先將問題轉換成學過的資料結構,裡邊提到鍊錶,好那我們知道有鍊錶了,在分析用鍊錶實現了那些操作?淘汰數據、查找數據、快取數據,這三個操作裡邊都涉及到查找,我們不得不遍歷整個鍊錶,時間複雜度為O(n)。

那我們就想能不能對查找進行最佳化呢?根據問題或資料的特徵找適用的資料結構,快取的三個操作涉及到快速的插入、刪除、查詢數據,我們在大腦中快速的檢索可以快速的實現插入、刪除、查詢的資料結構有哪些?平衡二元樹、散列表、跳表等,例如我們選擇散列表,最後分析時間複雜度是不是優化了很多,否則我們再換另一種資料結構進行效能分析。

我們不難發現,實際問題就會一步一步的分解成了我們學習到的資料結構的基本操作分析,然後利用我們學到的資料結構的優缺點和效能分析得出最優解絕方法,但是在企業中遇到實際問題中往往比我們拿一些做練習的實際問題複雜的要多。

相關推薦:程式設計影片課程

以上是資料結構怎麼自學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn