學習資料結構與演算法一個很重要的前提,就是至少熟練掌握一門編程語言,至于是那種語言就無關緊要了,C 語言、C++、Java、Python 等語言都可以,因為無論是資料結構還是演算法,它教會我們的是解決問題的思想,并不掛靠某一門具體的編程語言,換句話說,在掌握任何一門編程語言的基礎上,都可以學習資料結構和演算法,
資料結構與演算法的關系
大量資料結構教程中都將資料結構的知識和演算法摻雜起來講,使很多初學者認為資料結構就是在講演算法,這樣理解是不準確的,如果把程式理解為:
程式=資料+演算法
那么資料結構用于解決資料存盤問題,而演算法用于處理和分析資料,輸出結果,
在解決問題的程序中,資料結構要配合演算法選擇最優的存盤結構來存盤資料,而演算法也要結合資料存盤的特點,用最優的策略來分析并處理資料,可以最高效地解決問題,
資料結構與演算法的重要性

假設需要從眾多資料中查找出符合要求的元素,美學沒學習資料結構的話,只能借助陣列這種簡單的存盤結構來實作,而通過學習資料結構,解決此類問題既可以通過構建二叉排序樹、平衡二叉樹、紅黑樹、B+/B- 樹甚至借助哈希表解決,不同資料結構選擇往往直接影響程式性能好壞,
掌握了資料結構與演算法,看待問題的深度、解決問題的角度會大有不同,對于個人邏輯思維的提升,也是質的飛躍,與編程語言不同,無論是 c語言、Java、Python、C++、PHP 還是其他編程語言,無時無刻不在更新迭代,而資料結構卻永遠不會過時,毋庸置疑,資料結構是每個程式員必須掌握的基本功,
要想學好資料結構,不僅要求學員具備良好的編程基礎,還需具有較強的邏輯分析能力、理解能力和一定的空間想象能力,可以這么說,能玩轉資料結構的人,其綜合實力往往都不差,很多大的互聯網公司,更看重的往往不是你精通多少種編程語言,而是綜合能力,也就是解決問題的能力,可見,資料結構與演算法是能力高低的分水嶺,是大廠選拔人才的重要標準,
學習資料結構的三部曲
書
比如《演算法圖解》、《我的第一本演算法書》、《啊哈演算法》、《大話資料結構》、《漫畫演算法-小灰的演算法之旅》、《演算法(第4版)》、《資料結構與演算法分析》、《挑戰程式設計競賽》以及《演算法導論》等等,
如果要比較系統地學習資料結構的話,推薦看《大話資料結構》、《演算法(第4版)》和《資料結構與演算法分析》,

大話資料結

演算法(第4版)

據結構與演算法分析
如果剛接觸資料結構的話,可以從《演算法圖解》、《我的第一本演算法書》入手,

演算法圖解

我的第一本演算法書
視頻
1. 郝斌資料結構
雖然比較老,但是講的比較詳細,容易理解,對初學者非常友好,

https://www.bilibili.com/video/BV1Ut411a7rN?from=search&seid=14411767501116137153
2. 資料結構-浙江大學
課程是由陳越與何欽銘共同錄制,b站與慕課網都有,慕課網比較清晰一些

https://www.icourse163.org/course/ZJU-93001?from=searchPage
https://www.bilibili.com/video/BV1JW411i731?p=1
3. 資料結構與演算法基礎
課程由青島大學王卓老師錄制,非常適合考研,講的題比較多,

https://www.bilibili.com/video/BV1nJ411V7bd?p=1
多動手
動手去做,動手去做,動手去做,重要的話說三遍,
動手包括擼碼,還包括"多畫"
要邊學習邊畫圖,因為對于資料結構中的存盤結構來說,尤其是樹結構和圖結構,存盤結構確實比較復雜,僅靠空間想象難免會有披露,而通過親手畫圖往往能避免很多“坑”,后面關于資料結構與演算法的文章中,我也會加入一些動圖,
把資料結構圖形化,視徑訓,在直覺上感受一個資料結構是什么樣子的,使用它是什么感覺,抽象上和具體實作上是什么樣子的,這就是最重要的事情,并且無論是對于簡單的佇列、堆疊還是平衡樹都很重要而且有效,把資料結構畫出來,在你的腦袋瓜里面就能想象出來,總之,你需要做的就是,直觀的去了解這些資料結構,
在學習某些演算法時,也可以借助畫圖來加深自己的理解,可以邊閱讀代碼邊畫圖,這樣可以更快理清代碼的實作邏輯,
在通過“多畫”實作理解存盤結構和實作邏輯的基礎上,初學者還要“多擼碼”撰寫實作代碼,對于某一種存盤結構或者演算法,沒有 3 遍以上自己獨立的實作程序,是很難做到融會貫通的,
另外,可以在leetcode和牛客網多刷題,
思維導圖

來源:https://blog.csdn.net/ityqing/article/details/82838524
分享一本由谷歌大佬所撰的《LeetCode演算法題解+代碼》
里面包含了詳細的題目分析+詳細代碼答案且已開源,可作為刷題的輔助和參考,格式為PDF,方便閱讀,也方便列印出來學習,

需要上面PDF檔案,在公眾號(c語言與cpp編程)回復 「刷題」 兩個字自取,
為防止不加原址的轉載,特注明原作出處https://github.com/soulmachine/leetcode
微信搜一搜“C語言與CPP編程”,關注后送海量資料,最近github發現一寶藏倉庫,里面有很多資源,分享給大家,地址:https://github.com/tangtangcoding/C-C-
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279932.html
標籤:AI
上一篇:回溯演算法之N皇后問題
