學習資料結構與算法一個很重要的前提,就是至少熟練掌握一門程式設計語言。至于是那種語言就無關緊要了,C 語言、C++、Java、Python 等語言都可以。因為無論是資料結構還是算法,它教會我們的是解決問題的思想,并不挂靠某一門具體的程式設計語言。換句話說,在掌握任何一門程式設計語言的基礎上,都可以學習資料結構和算法。
資料結構與算法的關系
大量資料結構教程中都将資料結構的知識和算法摻雜起來講,使很多初學者認為資料結構就是在講算法,這樣了解是不準确的。如果把程式了解為:
程式=資料+算法
那麼資料結構用于解決資料存儲問題,而算法用于處理和分析資料,輸出結果。
在解決問題的過程中,資料結構要配合算法選擇最優的存儲結構來存儲資料,而算法也要結合資料存儲的特點,用最優的政策來分析并處理資料,可以最高效地解決問題。
程式員必備資源,值得收藏!點選下載下傳
資料結構與算法的重要性
假設需要從衆多資料中查找出符合要求的元素,美學沒學習資料結構的話,隻能借助數組這種簡單的存儲結構來實作,而通過學習資料結構,解決此類問題既可以通過建構二叉排序樹、平衡二叉樹、紅黑樹、B+/B- 樹甚至借助哈希表解決。不同資料結構選擇往往直接影響程式性能好壞。
掌握了資料結構與算法,看待問題的深度、解決問題的角度會大有不同,對于個人邏輯思維的提升,也是質的飛躍。與程式設計語言不同,無論是 c語言、Java、Python、C++、PHP 還是其他程式設計語言,無時無刻不在更新疊代,而資料結構卻永遠不會過時,毋庸置疑,資料結構是每個程式員必須掌握的基本功。
要想學好資料結構,不僅要求學員具備良好的程式設計基礎,還需具有較強的邏輯分析能力、了解能力和一定的空間想象能力,可以這麼說,能玩轉資料結構的人,其綜合實力往往都不差。很多大的網際網路公司,更看重的往往不是你精通多少種程式設計語言,而是綜合能力,也就是解決問題的能力。可見,資料結構與算法是能力高低的分水嶺,是大廠選拔人才的重要标準。
學習資料結構的三部曲
書
比如《算法圖解》、《我的第一本算法書》、《啊哈算法》、《大話資料結構》、《漫畫算法-小灰的算法之旅》、《算法(第4版)》、《資料結構與算法分析》、《挑戰程式設計競賽》以及《算法導論》等等。
如果要比較系統地學習資料結構的話,推薦看《大話資料結構》、《算法(第4版)》和《資料結構與算法分析》。
如果剛接觸資料結構的話,可以從《算法圖解》、《我的第一本算法書》入手。
視訊
1. 郝斌資料結構
雖然比較老,但是講的比較詳細,容易了解,對初學者非常友好。
https://www.bilibili.com/video/BV1Ut411a7rN?from=search&seid=144117675011161371532. 資料結構-浙江大學
課程是由陳越與何欽銘共同錄制,b站與慕課網都有,慕課網比較清晰一些
https://www.icourse163.org/course/ZJU-93001?from=searchPage https://www.bilibili.com/video/BV1JW411i731?p=13. 資料結構與算法基礎
課程由青島大學王卓老師錄制,非常适合考研,講的題比較多。
https://www.bilibili.com/video/BV1nJ411V7bd?p=1多動手
動手去做,動手去做,動手去做。重要的話說三遍。
動手包括撸碼,還包括"多畫"
要邊學習邊畫圖。因為對于資料結構中的存儲結構來說,尤其是樹結構和圖結構,存儲結構确實比較複雜,僅靠空間想象難免會有披露,而通過親手畫圖往往能避免很多“坑”,後面關于資料結構與算法的文章中,我也會加入一些動圖。
把資料結構圖形化,視覺化。在直覺上感受一個資料結構是什麼樣子的。使用它是什麼感覺,抽象上和具體實作上是什麼樣子的。這就是最重要的事情。并且無論是對于簡單的隊列、棧還是平衡樹都很重要而且有效。把資料結構畫出來,在你的腦袋瓜裡面就能想象出來,總之,你需要做的就是,直覺的去了解這些資料結構。
在學習某些算法時,也可以借助畫圖來加深自己的了解。可以邊閱讀代碼邊畫圖,這樣可以更快理清代碼的實作邏輯。
在通過“多畫”實作了解存儲結構和實作邏輯的基礎上,初學者還要“多撸碼”編寫實作代碼。對于某一種存儲結構或者算法,沒有 3 遍以上自己獨立的實作過程,是很難做到融會貫通的。
另外,可以在leetcode和牛客網多刷題。
思維導圖

來源:
https://blog.csdn.net/ityqing/article/details/82838524分享一本由谷歌大佬所撰的《LeetCode算法題解+代碼》
裡面包含了詳細的題目分析+詳細代碼答案且已開源,可作為刷題的輔助和參考,格式為PDF,友善閱讀,也友善列印出來學習。
上面PDF文檔,連結:
https://pan.baidu.com/s/1DXxvZvsBEtNmKBFkBhbYbw提取碼:1234
最近發現的一個寶藏資源分享給大家,點選領取