回鍋DS-5:將演算法過程與程式碼分離開解決

迂者-賀利堅發表於2019-02-20

現在又有個新的感悟,忍不住給您發郵件分享一下。
  我在看您的資料結構課程。到圖這一節的時候,我開始運用您的“給自己不斷的設一個跳起來就能夠得著的目標”,我每次看一個新小節的時候,我就想如果我做的話會怎麼做(當然,大多數情況下是無果的)。
  而且我看完了當時理解了,我會自己寫一遍。接著學著後面的我會想著前面的,隔一段時間在問一下自己如果現在讓你寫前面的xxx,你還能寫出來嗎。
  就是再這樣的過程中,我把圖的DFS熟悉了好多次,我也在想為啥很多人會覺得演算法難(包括我自己,不過現在覺得沒那麼難了),估計很多人不知道難在哪裡。
  以我個人的經歷,我認為,難點一:是解法的過程不好想,難點二:是當時會了,過一段就又容易遺忘。
  對於難點一,沒辦法,只能靠個人的積累和悟性。對於難點二,我覺得是可以解決的,之所以會出現難點二,是很多人覺得自己理解了,只是當時理解而已,或者看別人的東西當時也似懂非懂,但是趁著那股熱乎勁,能夠勉勉強強的把演算法寫出來。
  所以對於難點二,我現在就是利用您的“抽象方法”,儘量把演算法的過程和具體的程式碼脫離開,不讓具體的程式碼影響演算法的過程(今天中午才理解的比較透徹)。昨晚和今天中午我把DFS的過程自己想了想,然後用筆寫了出來,昨晚的那個比較粗淺。今天中午又寫了一遍,突然感覺豁然開朗。具體的演算法用漢語描述還是很簡單的,但是很多人就是把這個漢語的描述和具體的程式碼混淆在了一起,所以會出現類似“瞎撞”的情況。
  如圖,自己練習的時候自己比較潦草。右邊的過程寫完後,我就想起了您的視訊,我開啟視訊一看,和您的視訊中的一致。之前看視訊的時候其實看到這個中文片段的時候並未那麼重視。但是這就是精髓所在了。如果學習的過程學完後,能把這個過程也自己用漢語寫出來,剩下的就是用具體的程式語言翻譯一下吧(之前做的時候是兩個過程混在一塊,現在是翻譯寫好的過程,其實是很簡單的事情了)。
  另外這兩天在構思一篇文章,以圖的應用引出我的這個思考。然後把工作中個人理解的演算法和業務程式碼的聯絡(雖然有點弱,甚至說是沒有太直接的聯絡)說一下。

附:
回鍋DS-4:回頭看的感覺
回鍋DS-3:基本操作與指標體驗
回鍋DS-2:做專案中的思考
回鍋DS-1:對抽象之用的感悟及讓自己更有力量的思維方式

相關文章