作者 | ithuangqing
來源 | 編碼之外(ID:ithuangqing)
作為每一個學習計算機的大學生而言,最苦的莫過於學習數據結構與算法了,為啥啊?
明明知道數據結構和算法很重要,但是就是學不會,提到它就頭大,頭疼有木有……
不知道你是不是這樣,反正我當初是這樣,而且據我後來所知,好像大部分程序員都是這樣。
我們剛開始上大學的時候學習數據結構與算法真的覺得很難?即使你很聰明,想必學習起來也有點吃力吧,我現在看來大致有如下兩個原因導致我們大學的時候數據結構與算法學的都不好:
- 我們當時的知識面太窄,學習比較死板,不知道找各種輔助學習資料等,就覺得很難,自己搞不定。
- 大部分老師只管照著書本去講解,不知道傳授或者分享點其他的……
如此一來啊,我們毫不意外的在大學的時候就把數據結構和算法給落下了,當然,不乏那些學的好的,我們這些渣渣,只能看著他們校招進大廠,然後幻想他們走上人生巔峰,贏取白富美了……
其實吧,數據結構與算法本身而言確實是有難度的,但是嘞,只要我們肯下功夫,多花時間學習和練習,那學習數據結構與算法也是不成問題的,當然,如果再加上這些網站的加持,那你學好起來就會更加得心應手了
學算法必去的一個網站
首先有一個網站那是每一個學習數據結構與算法都必須去的網站,說出來你就知道了,那就是大名鼎鼎的LeetCode,就是它:https://leetcode.com/
因為這個網站實在牛杯,所以現在已經有了國內版也就是中文版“力扣”,你們打開https://leetcode.com/不出意外會自動跳轉到這裡:
中文版長這個樣子的:點開探索給你看看
在這裡插入圖片描述
強烈人手一個啊!不騙你!
那些可視化網站
接下來就是在你學習數據結構與算法的道路上不得不知的幾個可視化網站,啥意思嘞,我們在學習數據結構與算法的時候,之所以會覺得比較難,很大一部分是因為數據結構與算法比較抽象,我們理解起來比較困難,所以啊,理解數據結構與算法的一個最佳方法就是看看他們的實際用法,而這一點,我們可以通過一些可視化動畫來強化我們的理解,以下的這些網站都是可以讓你直觀的觀察數據結構與算的可視化網站。
Data Structure Visualizations
鏈接直達:Data Structure Visualizations
它張這個樣子:
可能有人說看不懂了,沒事,給你翻一下:
可能有人說不會用,沒事給你簡單演示下,比如二叉搜索樹:
你可以自己試試,保準一用就會!
visualgo
鏈接直達:https://visualgo.net/zh
在這裡插入圖片描述
看著心動嗎?我們繼續看看其中的操作:
在這裡插入圖片描述
自己趕緊去試試吧!
BinaryTreeGraph
鏈接直達:
這個主要是平衡樹這塊的可視化操作,我經常用這個網站,真的挺不錯的,還有個對應的開源項目,是打印二叉樹的,感興趣的可以看看:https://github.com/CoderMJLee/BinaryTrees
BinaryTreeVisualiser
鏈接直達:http://btv.melezinek.cz/home.html
在這裡插入圖片描述
這個主要是二叉樹相關的,比方說二叉搜索樹,你看看,是這樣的:
操作其實很簡單的,你們可以去試試看!
btree-js
鏈接直達:https://yangez.github.io/btree-js/
這是一個專門演示B樹的,也不錯!
Algorithm Visualizer
鏈接直達:https://algorithm-visualizer.org/
這是我比較喜歡的一個,這可是個牛杯的傢伙,給你們看看:
是不是看起來很專業的樣子,哈哈,翻譯一下再看看:
看出來了吧,這主要是個算法可視化網站,主要就是講解各種算法的,真的很棒,它可是支持代碼的,有js,java和c++,比如我這裡的java
然後就會在右邊出現相關的java代碼:
然後我們可以點擊這裡運行:
就問你強不強大,趕緊去試試吧!
算法分析相關網站
bigocheatsheet
鏈接直達:https://www.bigocheatsheet.com/
就給你這個圖應該知道它是幹嘛的了吧,趕緊收藏起來,很有用的,真的真的……
我們繼續……
Algorithms-DataStructures-BigONotation
鏈接直達:http://cooervo.github.io/Algorithms-DataStructures-BigONotation/index.html
這個也是一個可以查看算法分析的網站,但是人家不止於此:
這就需要你們自己去探索發掘啦!
小彩蛋
我們很多初學數據結構與算法的小夥伴,在剛開始會比較疑惑這個大0表示法是個啥玩意,這裡有個Stack Overflow上的熱門回答,挺不錯的,推薦給你們:
https://stackoverflow.com/questions/487258/what-is-a-plain-english-explanation-of-big-o-notation
感謝各位大大的閱讀
閱讀更多 互聯網架構小馬哥 的文章