這是上一封信《自主性學習,用實踐開路》的興許討論。html
【來信】算法
老師,關於算法和數據結構我仍是有點疑惑。你說要經過實踐。我現在看到數據結構的圖了,算法學習我借了劉汝佳的算法入門那本書,數據結構我把書中的代碼在電腦上敲了出來,並且搞懂了第一行代碼,也算是記住了思想。數據結構
但是有時候敲完後會認爲模糊。數據結構和算法
算法在看動態規劃,對於動態規劃裏面提到的「狀態」我仍是不能很是好的理解。我想問問老師。假設長時間事後數據結構和算法的思想忘了怎麼辦。怎麼學習數據結構和算法纔算是正確的方法。學了將近20天的數據結構和算法,逐漸感受到了別人所說的枯燥,究竟怎樣安排學習這類知識的時間。問下,老師有沒有算法的書籍推薦和比較明白的學習方法傳授。謝謝老師。學習
【回覆:逐點討論】spa
老師,關於算法和數據結構我仍是有點疑惑。 | |
你說要經過實踐,我現在看到數據結構的圖了, | ——你該告訴我你實踐到什麼程度了。 |
算法學習我借了劉汝佳的算法入門那本書, | ——是《算法競賽入門經典》嗎?這本書是好書,看成應用算法和數據結構解決這個問題的參考書就能夠。 但是若你正在學習數據結構期間,卻將之當主線。我認爲不妥。.net |
數據結構我把書中的代碼在電腦上敲了出來。 | ——我懷疑你用的材料不當了。數據結構中算法的描寫敘述假設直接就用高級語言寫出來了,很是不利於你進入「抽象」的層次。這樣學來的數據結構和算法,僅僅能照貓畫虎。眼前沒貓。即便有虎,也畫不出虎。 |
並且搞懂了第一行代碼, | ——疑是「每一行代碼」的筆誤。看代碼假設是以行做爲單位。那學習效果可想而知了。 要先知整體,再一大塊一大塊,再看大塊中的小塊。htm |
也算是記住了思想。 | ——假設算法思想是記住的。忘了就一點都不奇怪了。 |
但是有時候敲完後會認爲模糊。 | ——因爲你始終是僅僅見樹木。不見森林。這影響了你學習的速度和感覺。 |
算法在看動態規劃, | ——現在我感受,你是將算法和數據結構分開學。算法學習的初期,算法可以有兩種:一種算法是與數據結構緊密聯繫的。好比。各類基本數據結構上的基本操做。屬於這一種。還有一種,體現計算機求解問題方法層面的算法。好比動態規劃、貪心等。這二者間有交叉。基於對你學習路線已有的瞭解。我建議將這兩種分開一些,先第一種。後另一種。 |
對於動態規劃裏面提到的「狀態」我仍是不能很是好的理解。 | ——再找些同類的書,這本書上的說法沒有明白,再一本的說法可能就對你胃口了。 用好學校的圖書館。blog |
我想問問老師,假設長時間事後數據結構和算法的思想忘了怎麼辦。 | ——忘了太正常了。理想的結果就是「得意而忘形」。 而你前面描寫敘述的,試圖是「得形而記意」。改變學法爲要。好比排序算法,拿出一副撲克來,說用高速排序。就嚴格照其思想。手工玩出排序過程。這個玩的過程都可以不去考慮代碼該怎麼寫。玩熟練了,可以用某種語言寫一敲代碼。其它的算法,也要可以擺脫詳細代碼形態。以此去得意。這樣學出來的。是不easy忘記的。排序 關鍵是,作到了算法與語言無關。 |
怎麼學習數據結構和算法纔算是正確的方法。 | ——以上提示了一些,但也僅限於個人感受。 而對於你本身,要在學法上下功夫。你有更適合你本身的學法。僅僅是沒有想到去本身發現。 |
學了將近20天的數據結構和算法。逐漸感受到了別人所說的枯燥。 | ——這些知識實際是很是生動的,是學法不當所致。嘴裏喊着枯燥。學這玩意就是活受罪。很是多人就是這樣進入到冬眠狀態的。 |
究竟怎樣安排學習這類知識的時間。 | ——感受煩了累了就歇息、調整一下,不要強求。不要期望過一遍就將知識掌握到一種很是精通的程度,不可能。 多輪次地學,每一輪,都深刻一點點。初始的輪次,僅僅求能學點皮毛就能夠,僅僅求能解決點最簡單的問題就能夠,沒必要期望一次學習,就能把競賽類的題輕鬆作下來。剛會個三步上欄,就要打NBA,那不是自找不痛快嗎?作不來的,放在那兒等着回頭就收拾。用輕鬆的心態去學習,而不要這樣焦燥。 |
問下。老師有沒有算法的書籍推薦和比較明白的學習方法傳授。 | ——現階段。你就用好手邊的書就能夠,而學習方法,我提示了一些。最適合你的方法,誕生在你本身的探索過程裏。 |
================= 迂者 賀利堅 CSDN博客專欄================= |== IT學子成長指導專欄 專欄文章的分類文件夾(不按期更新) ==| |== C++ 課堂在線專欄 賀利堅課程教學連接(分課程年級) ==| |== 我寫的書——《逆襲大學——傳給IT學子的正能量》 ==| ===== 爲IT菜鳥起飛鋪跑道,和學生一塊兒享受快樂和激情的大學 ===== |