關於演算法學習方法的討論

來源:互聯網
上載者:User

標籤:style   blog   http   color   資料   io   

  這是上一封信《自主性學習,用實踐開路》的後續討論。

【來信】

  老師,關於演算法和資料結構我還是有點疑惑。你說要通過實踐,我現在看到資料結構的圖了,演算法學習我借了劉汝佳的演算法入門那本書,資料結構我把書中的代碼在電腦上敲了出來,並且搞懂了第一行代碼,也算是記住了思想。但是有時候敲完後會覺得模糊。演算法在看動態規劃,對於動態規劃裡面提到的“狀態”我還是不能很好的理解。我想問問老師,如果長時間過後資料結構和演算法的思想忘了怎麼辦,怎麼學習資料結構和演算法才算是正確的方法。學了將近20天的資料結構和演算法,逐漸感覺到了別人所說的枯燥,到底如何安排學習這類知識的時間。問下,老師有沒有演算法的書籍推薦和比較明確的學習方法傳授。謝謝老師。

 

【回複:逐點討論】

老師,關於演算法和資料結構我還是有點疑惑。  
你說要通過實踐,我現在看到資料結構的圖了, ——你該告訴我你實踐到什麼程度了。
演算法學習我借了劉汝佳的演算法入門那本書, ——是《演算法競賽入門經典》嗎?這本書是好書,當作應用演算法和資料結構解決問題的參考書即可。但是若你正在學習資料結構期間,卻將之當主線,我覺得不妥。
資料結構我把書中的代碼在電腦上敲了出來, ——我懷疑你用的材料不當了。資料結構中演算法的描述如果直接就用進階語言寫出來了,很不利於你進入“抽象”的層次,這樣學來的資料結構和演算法,只能照貓畫虎,眼前沒貓,即使有虎,也畫不出虎。
並且搞懂了第一行代碼, ——疑是“每一行代碼”的筆誤。看代碼如果是以行作為單位,那學習效果可想而知了。要Crowdsourced Security Testing整體,再一大塊一大塊,再看大塊中的小塊。
也算是記住了思想。 ——如果演算法思想是記住的,忘了就一點都不奇怪了。
但是有時候敲完後會覺得模糊。 ——因為你始終是只見樹木,不見森林。這影響了你學習的速度和感受。
演算法在看動態規劃, ——現在我感覺,你是將演算法和資料結構分開學。演算法學習的初期,演算法可以有兩種:一種演算法是與資料結構緊密聯絡的,例如,各種基本資料結構上的基本操作,屬於這一種;另一種,體現電腦求解問題方法層面的演算法,例如動態規劃、貪心等。這兩者間有交叉。基於對你學習路線已有的瞭解,我建議將這兩種分開一些,先第一種,後第二種。
對於動態規劃裡面提到的“狀態”我還是不能很好的理解。 ——再找些同類的書,這本書上的說法沒有明白,再一本的說法可能就對你胃口了。用好學校的圖書館。
我想問問老師,如果長時間過後資料結構和演算法的思想忘了怎麼辦, ——忘了太正常了。理想的結果就是“得意而忘形”。而你前面描述的,試圖是“得形而記意”。改變學法為要。例如排序演算法,拿出一副撲克來,說用快速排序,就嚴格照其思想,手工玩出排序過程。這個玩的過程都可以不去考慮代碼該怎麼寫。玩熟練了,可以用某種語言寫一寫程式。其他的演算法,也要能夠擺脫具體代碼形態,以此去得意。這樣學出來的,是不容易忘記的。關鍵是,做到了演算法與語言無關。
怎麼學習資料結構和演算法才算是正確的方法。 ——以上提示了一些,但也僅限於我的感覺。而對於你自己,要在學法上下功夫,你有更適合你自己的學法,只是沒有想到去自己發現。
學了將近20天的資料結構和演算法,逐漸感覺到了別人所說的枯燥, ——這些知識實際是非常生動的,是學法不當所致。嘴裡喊著枯燥,學這玩意就是活受罪。很多人就是這樣進入到冬眠狀態的。
到底如何安排學習這類知識的時間。 ——感覺煩了累了就休息、調整一下,不要強求。不要指望過一遍就將知識掌握到一種很精通的程度,不可能。多輪次地學,每一輪,都深入一點點。初始的輪次,只求能學點皮毛即可,只求能解決點最簡單的問題即可,不必指望一次學習,就能把競賽類的題輕鬆做下來。剛會個三步上欄,就要打NBA,那不是自找不痛快嗎?做不來的,放在那兒等著回頭就收拾。用輕鬆的心態去學習,而不要這樣焦燥。
問下,老師有沒有演算法的書籍推薦和比較明確的學習方法傳授。 ——現階段,你就用好手邊的書就行,而學習方法,我提示了一些。最適合你的方法,誕生在你自己的探索過程裡。

 




================= 迂者 賀利堅 CSDN部落格專欄=================|== IT學子成長指導專欄 專欄文章的分類目錄(不定期更新) ==||== C++ 課堂線上專欄  賀利堅課程教學連結(分課程年級) ==||== 我寫的書——《逆襲大學——傳給IT學子的正能量》    ==|===== 為IT菜鳥起飛鋪跑道,和學生一起享受快樂和激情的大學 =====





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.