數據結構和算法可視化工具——Data Structure Visualizations


正好最近關注到學習數據結構和算法的兩個工具,特別好用。下面我就分別介紹下這兩個工具,各位可以收藏一下,說不定以后能用到。

第一個工具是數據結構和算法可視化工具——Data Structure Visualizations。該工具由舊金山大學開發,地址:

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

它的作用是將數據結構和算法用可視化的方式展現出來,方便我們理解其中的原理。類似的工具還挺多的,我對比了四五個之后,覺得這個是最好的。內容豐富、容易操作、訪問速度快且容易理解。雖然網站是英文的,但英文並不多,且都是些容易理解的術語。

下面我就帶大家體驗簡單體驗一下該工具如何使用。首先,來看看該工具包含多少內容

這只截取了部分,可以看到其中包含了各種樹(二叉搜索樹、紅黑樹、B樹)、各種排序(歸並排序、快速排序、堆排序)以及各種圖算法(最短路徑、最小生成樹算法)。基本上涵蓋了我們平時常見的數據結構和算法。

下面再來看看該工具是如何操作的

上圖左邊是我用工具建立的一顆紅黑樹,右邊是一顆B+樹。可以看到頁面上沒有過多的冗余信息,只是包含了插入、刪除、打印相關的按鈕以及選項,學習成本特別低。在做插入和刪除時會有相應的動畫,來幫助我們了解數據結構本身的原理,下面錄了個小短視頻讓大家體驗一下。(這里直接貼視頻確實沒整明白,放了個鏈接,大家可以在鏈接中找到)

紅黑樹(鏈接中第一個視頻):https://mp.weixin.qq.com/s?__biz=MjM5MjcwMjk4OA==&mid=2247484282&idx=1&sn=36685ee078f892223b2daeb11ead96f9&chksm=a6a3741991d4fd0f33cba3598e50b021ad5cf9a215c00c36f656b2bcd4396804d4b48b73d05d&token=1458642456&lang=zh_CN#rd

B+樹(鏈接中第二個視頻):https://mp.weixin.qq.com/s?__biz=MjM5MjcwMjk4OA==&mid=2247484282&idx=1&sn=36685ee078f892223b2daeb11ead96f9&chksm=a6a3741991d4fd0f33cba3598e50b021ad5cf9a215c00c36f656b2bcd4396804d4b48b73d05d&token=1458642456&lang=zh_CN#rd

其實從這里我們也能大概看出紅黑樹和B+樹的一些區別,上圖B+樹中的元素比紅黑樹多,然而樹的高度卻比紅黑樹低。這一特點就決定了在數據庫場景中,不可能用紅黑樹做索引,那會導致樹高度非常高。這種可視化的方式體感很強。

上面介紹了可視化工具,下面再介紹一個數據結構和算法的代碼庫,地址:

https://github.com/TheAlgorithms/Pythonhttps://github.com/TheAlgorithms/Javascripthttps://github.com/TheAlgorithms/Javahttps://github.com/TheAlgorithms/C

有各種語言的版本。先來看看都包含什么內容

這里只是截取了部分內容,跟可視化工具一樣,常見的數據結構和算法基本都包含。

最后,用二分查找的小例子,來將這兩個工具結合起來。二分查找算法很簡單,它是我出去找工作面試中出現頻率最高的一道題。雖然簡單但也別小看它,我做面試官的時候,仍然遇到有好多人寫不出來。Python版算法庫代碼地址:

https://github.com/TheAlgorithms/Python/blob/master/searches/binary_search.py

我自己也實現了一下,代碼如下:

二分查找過程如下(鏈接中第三個視頻):

https://mp.weixin.qq.com/s?__biz=MjM5MjcwMjk4OA==&mid=2247484282&idx=1&sn=36685ee078f892223b2daeb11ead96f9&chksm=a6a3741991d4fd0f33cba3598e50b021ad5cf9a215c00c36f656b2bcd4396804d4b48b73d05d&token=1458642456&lang=zh_CN#rd

這里既包含了查找過程,又包含了每一步查找對應的執行代碼,非常方便學習。

有可視化工具和代碼,再結合原理相信沒有學不會的數據結構和算法。希望這兩個工具對你有用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM