『壹』 如何學習數據結構與演算法
1、記住數據結構,記住演算法思想(是什麼)記住數據結構最直觀的東西;記憶該數據結構的定義、性質、特點等。很多東西的理解和創新都是以記憶為前提的。
2、進行大量相關編程練習,用編程語言去實現某一數據結構上的演算法(怎麼辦)
很多時候,理解一個演算法很容易,很容易在紙上去模擬一個演算法的實現過程。但具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的編程語言實現。
3、“記住”特定情景下,利用某一特定的數據結構,去解決問題 (為什麼+怎麼辦)
每介紹一種數據結構,浙大數據結構與演算法的MOOC課程都會有一個實際問題來作為“引子”,回答了“這種數據結構為什麼會出現”。有的是為了實現特定的操作,有的是為了時間和空間上(大部分考慮的是時間復雜性)效率的更高(所以,沒事的時候,分析一下演算法的時間復雜性)。這些東西,我們也須理解記憶。每一數據結構都有其特性,去解決某一類問題,我們需要去記憶,去感悟。
4、形成一個屬於自己的知識體系
如何去“記住”(記好筆記,多多復習);在學習過程中,遇到挫折,產生挫敗感該如何處理(這個是必然會發生的,總有難以理解不會的地方);如何進行心態方面的調整(欲速則不達,不過也有”敏捷學習“的概念)。
『貳』 學數據結構和演算法之前要先學什麼
很顯然你首先需要會一門編程語言。數據結構可以在不同的語言下實現,你可以看常用的數據結構教材,有的基於C,有的基於JAVA,所以在學習數據結構與演算法之前,先學會一門語言是很有必要的事情。
因為數據結構書中很多內容用到的都是C語言偽代碼,如果不懂C語言的話應該是看不懂的。多了解一下點C語言、數據類型、循環分支、結構體、指針等基本知識。一般來說,學習完c語言之後,效率會比較高點,另外數學好的話對理解演算法是有好處的,動態規劃啊,決策樹啊之類的,具體的知識可以去小碼哥李明傑了解。
因為數據結構是需要編程實現的。在內容上,數據結構很大一部分是獨立的,但也有一部分與其它課程有關,比如離散數學,線性代數等,不過也沒多大影響,書上都帶有詳細介紹。數據結構理論性很強,需要多動手寫代碼,理解好原理,而且會編程實現,這兩方面都很重要。