8個私藏的數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí)站,我貢獻(xiàn)出來了
大家好,我是小富~
數(shù)據(jù)結(jié)構(gòu)和算法是計算機(jī)專業(yè)的基礎(chǔ)課程,更是大廠筆試和面試考察的重點(diǎn)。
對于初學(xué)數(shù)據(jù)結(jié)構(gòu)的小伙伴,大多都會感覺到很難、很抽象,庫森大二學(xué)數(shù)據(jù)結(jié)構(gòu)時也是這種感覺。
因為數(shù)據(jù)結(jié)構(gòu)的描述大多是抽象的形式,而我們習(xí)慣使用自然語言表達(dá),很難接受數(shù)據(jù)結(jié)構(gòu)的抽象表示。
尤其是使用嚴(yán)蔚敏的那本教材,只有偽代碼和一堆概念,很容易被繞進(jìn)去,代碼也無法運(yùn)行,非常不直觀。
當(dāng)然并不是說這本書不好,這本書適合期末考試和考研,想學(xué)好數(shù)據(jù)結(jié)構(gòu)和算法還是要看其他經(jīng)典書籍,如算法4、算法導(dǎo)論等。
如果有動畫能夠演示下算法的運(yùn)行過程,那樣理解起來會更容易。
那今天就給大家分享的八個算法可視化和分析網(wǎng)站,可以讓你以動畫的形式,看到數(shù)據(jù)的具體結(jié)構(gòu)和算法的運(yùn)行過程,而且有算法的實(shí)現(xiàn)代碼和文字講解,再也不用擔(dān)心學(xué)不好數(shù)據(jù)結(jié)構(gòu)和算法了。
1、VISUAL GO
直達(dá)鏈接:https://visualgo.net/zh

這是一個數(shù)據(jù)結(jié)構(gòu)和算法動態(tài)可視化的網(wǎng)站,支持多種語言,由新加坡國立大學(xué)提供。
內(nèi)容非常豐富,不僅有排序、鏈表、哈希表、圖等基礎(chǔ)內(nèi)容,還有并查集、線段樹、后綴樹等進(jìn)階內(nèi)容。
VISUAL GO 提供了多種數(shù)據(jù)結(jié)構(gòu)和算法的可視化演示效果,通過它可以直觀地掌握常見的數(shù)據(jù)結(jié)構(gòu)、算法的執(zhí)行過程,還可以自定義數(shù)據(jù),效果很直觀,對初學(xué)者理解和學(xué)習(xí)算法很有幫助。
下面以冒泡排序為例,看下可視化的效果:

2、Data Structure Visualizations
直達(dá)鏈接: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

Data Structure Visualizations是由美國舊金山大學(xué)計算機(jī)系出品的數(shù)據(jù)結(jié)構(gòu)與算法可視化學(xué)習(xí)網(wǎng)站,通過這個網(wǎng)站可以很清晰地看到整個算法的運(yùn)行過程。
支持的數(shù)據(jù)結(jié)構(gòu)也很豐富,有棧、隊列、二叉樹、紅黑樹、AVL樹、Hash、B樹、B+樹等
算法有各類排序算法、廣度優(yōu)先搜索、深度優(yōu)先搜索、最小生成樹、N皇后問題等。
演示個紅黑樹,看看效果,觀察它的 Insert 過程:

可以調(diào)節(jié)動畫速度,真的很強(qiáng)大!
3、algorithm-visualizer
直達(dá)鏈接:https://algorithm-visualizer.org/
這是一個講解各種算法的網(wǎng)站,支持各種代碼的,包括js,java和c++
這個網(wǎng)站最大的特點(diǎn)是,不僅有動畫的演示,而且控制臺會輸出整個執(zhí)行過程,能幫助大家更好地理解算法。
比如,我這里使用java

然后就會在右邊出現(xiàn)相關(guān)的java代碼:

點(diǎn)擊這里運(yùn)行:

4、Vamonos
直達(dá)鏈接:http://rosulek.github.io/vamonos/

有常用的數(shù)據(jù)結(jié)構(gòu)與算法的演示:棧、隊列、二叉樹、紅黑樹、B樹、拓?fù)渑判颉V度優(yōu)先算法。
5、BinaryTreeGraph
直達(dá)鏈接:http://520it.com/binarytrees

這是個平衡樹可視化網(wǎng)站,有二叉樹、AVL樹、紅黑樹、二叉堆的演示。
還有個對應(yīng)的開源項目,是打印二叉樹的,感興趣的可以看看:https://github.com/CoderMJLee/BinaryTrees
類似的二叉樹可視化網(wǎng)站:http://btv.melezinek.cz/home.html
6、btree-js
直達(dá)鏈接:https://yangez.github.io/btree-js/

這是個專門演示B樹的網(wǎng)站,我們可以在上面插入自定義的數(shù)據(jù)來模擬B樹的構(gòu)建過程。
B樹也稱B-樹,它是一顆多路平衡查找樹,千萬不要以為B樹是一種樹,B-樹是一種樹,把B-樹讀成B減樹就很尷尬了
7、bigocheatsheet
直達(dá)鏈接:https://www.bigocheatsheet.com/

這個網(wǎng)站分析了常用算法的時空Big-O復(fù)雜性,常見數(shù)據(jù)結(jié)構(gòu)操作的時間復(fù)雜度:

8、Algorithms-DataStructures-BigONotation
直達(dá)鏈接:http://cooervo.github.io/Algorithms-DataStructures-BigONotation/index.html
這是一個可以查看算法分析的網(wǎng)站,但功能遠(yuǎn)不止這些。
在這個網(wǎng)站上還有數(shù)據(jù)結(jié)構(gòu)和算法的基礎(chǔ)知識,如復(fù)雜性如何判斷,Java中的ArrayList、Set、Map是用數(shù)據(jù)結(jié)構(gòu)如何實(shí)現(xiàn)的。

End
在看 、 點(diǎn)贊 、 轉(zhuǎn)發(fā) ,是對我最大的鼓勵 。
技術(shù)書籍公眾號內(nèi)回復(fù)[? pdf ?] Get 。
面試筆記、springcloud進(jìn)階實(shí)戰(zhàn)PDF,公眾號內(nèi)回復(fù)[? 1222 ?]?Get。
?
??有幾個技術(shù)群,想進(jìn)的同學(xué)可以加我好友,備注:進(jìn)群,一起成長。
