數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

學過數據結構和算法的都知道這玩意兒不好學,沒學過的經常聽到這樣的說法還沒學就覺得難,其實難嗎?真難!

難在哪呢?當年我還是個小蒟蒻,初學數據結構和算法的時候,在忍著枯燥看完定義原理,之後想實現的時候,覺得它們的過程真的是七拐八繞,及其難受。

在簡單的鏈表、棧和隊列這些我還能靠著在草稿上寫寫畫畫理解過程,但是到了數論、圖論的時候,中間實現的過程步驟開始劇增,那個時候靠寫寫畫畫和對程序的單步調試強行理解,作為一個智商一直被壓制的慘人,稍不注意就會重新來過,陷入死循環...

後來搞 ACM 之初,我的隊友給了我一個數據結構模擬器的壓縮包(後來知道好像是嚴蔚敏數據機構那本書光盤裡帶的),裡面是對一些數據結構的模擬操作,一步步的很形象,有些東西好像一下子就通了...

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

這種可視化的動畫真的對我們理解數據結構和算法非常有幫助,尤其是在學習之初,堪稱很好的防勸退工具,所以我對這些做了一些整理,希望能幫助到你。

0x00 數據結構在線模擬器

Github 網址:https://github.com/IACJ/react-datastructer

在線網址:https://iacj.github.io/react-datastructer/#/

這個在線的模擬器包含“棧”、“隊列”、“堆”、“BST” 等數據結構,每個數據結構以圖像的方式展示在我們面前,同時又有各自的幫助文檔,可以用鼠標對數據節點進行拖拽,還可以實現各種數據結構的增刪改查。

還有一點好的是,這個網站還伴隨著一些數據結構的教學材料、簡要的複雜度分析、數據結構使用實例,對於理解各種數據結構的原理及運用可以說是相當絲滑了...

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解


網站上還帶著使用說明和產品簡介,可以說是相當貼心了...

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

隨便點開一個“堆”的,大家體驗一下,是不是想趕緊用起來啦...

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

0x01 VisuAlgo

英文網址:https://visualgo.net/en

中文網址:https://visualgo.net/zh

VisuAlgo 可以說是知名度比較高的一個通過動畫學習算法和數據結構的網站了,它最初的建立就是通過可視化讓學生更好的理解數據結構和算法。

VisuAlgo 的功能更豐富,它包含了很多的數據結構和算法,從簡單的到複雜的都一一包含,而且對於一些新出現的算法也有涉獵,通過可視化動畫的方法,幫助我們更輕鬆透徹的理解算法及原理,尤其是對一些通過文字描述很難理解的算法而言,簡直是生命之光。

VisuAlgo 還支持搜索和多種語言的切換,英語不好的同學可以切換成中文,但是現在有一些算法中文翻譯的並不全,所以如果能看英文的話還是建議看中文的。

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

我們隨便點開一個排序來看,可以看到它包含之多,還帶文字講解、單步、回退、暫停等功能,真的是功能豐富且強大,當然它不止於此,還包含著更多的東西等著我們去玩兒,趕緊行動起來吧。

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

0x02 Data Structure Visualizations

網址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

這是舊金山大學的一個數據結構和算法的可視化工具,不過它涉及的內容沒有 VisuAlgo 多,不過也涉及了很多常用的數據結構和算法。

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

我們隨便打開一個“棧”,左上角就有 Push(進站)、Pop(出棧)、Clear Stack(清空棧),下面可以設置對動畫的一些參數,關於具體的使用,還需要大家多做嘗試:

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

0x03 Algorithm Visualizer

Github 網址:https://github.com/algorithm-visualizer/algorithm-visualizer

網址:https://algorithm-visualizer.org/

AV 同樣包含了很多可視化的數據結構和算法,包括動態規劃、加密算法、回溯算法等,這個項目在 Github 上有 25k+ 的 Star,足以見得它的受歡迎程度:

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

同樣隨便點開一個“二叉搜索樹”,包括演示區域、過程數據記錄和代碼演示的部分,而且在代碼演示的部分,動畫執行到某步的同時代碼執行處也會同步,既可以理解代碼也可以理解算法原理和過程,真的是相當棒!

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

0x04 LeetCodeAnimation

網址:https://github.com/MisterBooo/LeetCodeAnimation

這個是我的好朋友程序員吳師兄(五分鐘學算法)維護的項目,在 Github 上已經有了 44k+ 的 star,屬於頭部中的戰鬥機。

這個項目致力於用動畫的形式呈現解LeetCode題目的思路,我們學數據結構與算法,就是為了用,在實際具體的實操環境中往往更能加深對理解,在應用中理解,在理解中應用,才能更快的掌握。

比如刪除鏈表的倒數第 N 個節點:

數據結構和算法難理解?可視化動畫網站帶你輕鬆透徹理解

現在項目還在繼續完善,我覺得大家應該 star 一下。

0x05 寫在之後

雖然這篇文章介紹的幾種可視化動畫,可以更輕鬆的理解數據結構和算法,但我還是建議大家把這個當成一個輔助工具來用,理解以後還是要自己動手寫寫畫畫,不要過度依賴,因為方便讓人懶惰。

總會有新的東西需要你靠自己去理解,去學習,而不是每次都有通往目的地的捷徑,大家共勉。


分享到:


相關文章: