正好最近關注到學習數據結構和算法的兩個工具,特別好用。下面我就分別介紹下這兩個工具,各位可以收藏一下,說不定以后能用到。
第一個工具是數據結構和算法可視化工具——Data Structure Visualizations。該工具由舊金山大學開發,地址:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
它的作用是將數據結構和算法用可視化的方式展現出來,方便我們理解其中的原理。類似的工具還挺多的,我對比了四五個之后,覺得這個是最好的。內容豐富、容易操作、訪問速度快且容易理解。雖然網站是英文的,但英文並不多,且都是些容易理解的術語。
下面我就帶大家體驗簡單體驗一下該工具如何使用。首先,來看看該工具包含多少內容
這只截取了部分,可以看到其中包含了各種樹(二叉搜索樹、紅黑樹、B樹)、各種排序(歸並排序、快速排序、堆排序)以及各種圖算法(最短路徑、最小生成樹算法)。基本上涵蓋了我們平時常見的數據結構和算法。
下面再來看看該工具是如何操作的
上圖左邊是我用工具建立的一顆紅黑樹,右邊是一顆B+樹。可以看到頁面上沒有過多的冗余信息,只是包含了插入、刪除、打印相關的按鈕以及選項,學習成本特別低。在做插入和刪除時會有相應的動畫,來幫助我們了解數據結構本身的原理,下面錄了個小短視頻讓大家體驗一下。(這里直接貼視頻確實沒整明白,放了個鏈接,大家可以在鏈接中找到)
其實從這里我們也能大概看出紅黑樹和B+樹的一些區別,上圖B+樹中的元素比紅黑樹多,然而樹的高度卻比紅黑樹低。這一特點就決定了在數據庫場景中,不可能用紅黑樹做索引,那會導致樹高度非常高。這種可視化的方式體感很強。
上面介紹了可視化工具,下面再介紹一個數據結構和算法的代碼庫,地址:
https://github.com/TheAlgorithms/Python
https://github.com/TheAlgorithms/Javascript
https://github.com/TheAlgorithms/Java
https://github.com/TheAlgorithms/C
有各種語言的版本。先來看看都包含什么內容
這里只是截取了部分內容,跟可視化工具一樣,常見的數據結構和算法基本都包含。
最后,用二分查找的小例子,來將這兩個工具結合起來。二分查找算法很簡單,它是我出去找工作面試中出現頻率最高的一道題。雖然簡單但也別小看它,我做面試官的時候,仍然遇到有好多人寫不出來。Python版算法庫代碼地址:
https://github.com/TheAlgorithms/Python/blob/master/searches/binary_search.py
我自己也實現了一下,代碼如下:
二分查找過程如下(鏈接中第三個視頻):
這里既包含了查找過程,又包含了每一步查找對應的執行代碼,非常方便學習。
有可視化工具和代碼,再結合原理相信沒有學不會的數據結構和算法。希望這兩個工具對你有用。