熬夜寫的數據結構與算法學習指南,可能是最適合新手的了!(附贈資料)

先來聊聊學習數據結構與算法

不知道你們是腫麼樣,反正我大學的時候數據結構與算法那是慘的一批😂,不怕告訴你,當初數據結構60分剛剛及格,至於爲啥剛剛60分,那我心裏還不跟明鏡似的,唉,當初上這個課,那跟聽天書似的,講的是個啥,完全搞不懂啊,你見我當時的書:
在這裏插入圖片描述
我就不告訴你,這是我趴上面睡覺壓的😂,怪尷尬的,反正我這塊差的一批,自己之前雖然一直在自學,但是這塊還真沒有咋下功夫,後來去面試的時候,凡是這塊的問題,我就都忽略了,完全不會啊,我也很無奈啊🤣

爲啥會這樣?反正吧,有一半的自身因素,也有一半的環境因素,不過這都過去了了,好漢不提當年衰啊,不過這次我可是鐵了心,要搞定數據結構與算法了,我知道,肯定有很多和我一樣的,上大學的時候沒有好好學,導致現在自己在這塊是個大大的短板,沒事沒事,接下來的日子,咱們一塊來學習數據結構與算法,我會從零到一的去學習,去寫文章,去與大家交流分享……

數據結構與算法,聽起來就難得不要不要的

數據結構與算法真的是那種聽起來就讓人聞風喪膽的嗎😂,爲啥大家都覺得它難嘞?我覺得吧,有一部分原因是大家大學的時候都學過,可是當時真的聽不懂,所以就形成了一種思維定式,就覺得這玩意難,後來嘞,需要學習的知識越來越多,而我們人吶,往往會優先選擇那些做起來簡單的,因此,很大一部分人在後來的學習中就把數據結構與算法給擱置了……

還有就是,我們在後來的工作與學習中可能也有好多次去學習數據結構與算法,但是當自己真正的去接觸這玩意的時候,我去,還真的有難度啊,怪不得很多人都說數據結構與算法難,看來是真的……

然後嘞,我們其實實際的工作中,一般化的,用到數據結構與算法的時候真的蠻少的,學習的性價比不高啊,也就面試的時候有時候會考考,那就臨時抱佛腳唄,也能搞定面試……

那麼數據結構與算法,到底難嗎?說實話,難,因爲很抽象,也複雜,再加上我們的思維定式,沒有形成系統化的學習與練習,很多人吶,這塊都是短板,尤其新手這塊,知道這塊重要,但是完全弄不着頭腦啊……

數據結構與算法,到底該怎麼學?😂

可能有人說了,我也知道啊,數據結構與算法很重要,我也想學習啊,但是就是覺得無從下手啊,咋辦,我也很彷徨啊😂

真實真實,太真實了,也太扎心了🤣

別說你,其實很多人剛開始不都是這樣嗎?那接下來我就告訴你學習他們的祕籍,首先嘞,我需要你先記住這句話,這也是一個學習祕籍啊,那即是:

知識在於積累,學習需要耐心!

這句話說的賊好!其實很多人都是這樣的,我們一開始學習一個知識點,都會感到無從下手,不知道該怎麼去學,俗話說,萬事開頭難,這話是真的,大部分人真的就是開始還沒有就結束了。

很多人的學習數據結構與算法就是這樣,還沒開始就結束了……

接下來我就說說關於學習一些編程知識的法寶祕籍,不要外傳哦,對了我以下要說的其實不是針對數據結構與算法,對於學習其他知識也是很有參考意義的。

通用性建議—如何學習編程知識?

1、你需要的不是一個參考

我們有時候學習一個知識點,一定會去找一些學習資源,這是一個輸入的過程,這個過程一定要是儘量的多而全,就比如我們學習數據結構中的鏈表,我們學習的話,可以多看看基本相關書籍上對這個知識點的介紹,然後再去網上看看別人寫的博客以及別人學習的心得,有了這些,你就要自己去思考,甚至去實踐,把這些知識點吸收內化,然後用自己的話表達出來,這可以是筆記,更可以是博客,而我建議是你把它寫成博客,學習一個知識,其實就是這樣!

2、不要鑽牛角尖

這個啥意思嘞?就是有的時候啊,我們學習一定會碰到自己不會的,而且這個問題自己一時半會還解決不了,如果這要是在工作中的話,你最好趕快找人求助,因爲這是你的工作任務,不能完不成,更不能因此而耽誤你的整體工作進度,但是,如果是我們私底下學習的話,有的時候遇到實在理解不了,搞不定的,我們真的沒有必要非得當下一定要把它搞懂,比如有些人學習遞歸,就是看不懂,不理解,還非要跟自己較勁,把自己整的垂頭喪氣的,大可不必如此,放下它,學學其他的,甚至你可以打把遊戲,說不定下次再看,就恍然大悟了,你還別不信,有的時候真的是這樣。

3、一定要多交流

其實吧,說起這個很尷尬,因爲我有體會啊,交流其實蠻重要的,但是,真正的交流其實很少,別說現在有各種各樣的羣,但是你如果去問問題的話,大概率沒人鳥你,所以所謂的技術交流羣在我看來很多都是扯淡,然並卵的存在,這個一直是個問題,其實吧,這也是我的短板,這塊我一直在想辦法,也一直在試錯,別擔心,有成果我一定會第一時間告訴你們,在此之前,你們依然可以去水各種羣,另外還一個行之有效的方法,找人私聊請教!

4、你得多動手(不是讓你找人打架)

這點我覺得吧,很多人都知道,但是做的人真心不多,包括我,我這塊做的就不好,有的時候覺得自己那麼渣也是有原因的😂,編程這玩意,真的得多動手實踐,說白了,你得多敲代碼,看是一回事,懂了又是一回事,但是,只有你真正的自己能夠動手敲代碼搞出來,那才叫沒事,之前很多人給我說,慶哥慶哥,爲啥我看書或者看視頻當時自己看懂了啊,可是敲代碼的時候就一臉懵逼,別說你,有的時候我也是一臉懵啊,爲啥,還是你敲的少,第一次敲不出來,抄總可以吧,抄的多了,你就記住了,再敲……

數據結構與算法的學習更是如此,後期我會帶着大家進行大量的實戰,其實這塊你不用操心,跟着慶哥我就行了,因爲我也是要學習的。

再記住一句話:

紙上得來終覺淺,絕知此事要躬行!

沒有人可以一蹴而就,付出總歸會有回報,越努力與幸運!

以上說的這幾點,其實可以運用到你學習的任何知識,我們學習啊,有個很重要的能力,那就是觸類旁通,舉一反三啊,好好理解我上面說的幾個,對你學習數據結構與算法是很有幫助的哦。

接下來我們繼續針對數據結構與算法的學習來說說。

那麼針對數據結構與算法該怎麼學習?

先搞數據結構,再搞定算法

我之前寫了好幾篇關於數據結構的文章了,一個心得,那就是一定要畫圖(學習數據結構的餓時候),很多人覺得數據結構難,很大一個原因就是這玩意比較抽象所以學習的時候,自己動手畫畫圖,你要在自己的腦海中把這些數據結構的樣子給固定下來,說到哪個數據機構,腦海中要立馬想到,這玩意長啥樣,這是最基本的一步。

也就是說啊,前期我們開始學習數據結構的時候,自己一定要多動手畫畫圖,這真的有助於你理解。數據結構這塊嘞,其實那就要學會那些基本的幾個,也就是棧,隊列,數組,鏈表這些,當我們把這些基本的數據結構學的差不多了,這個差不多是咋回事嘞,啥是個差不多嘞,那就是它是個啥你得知道,然後最好自己動手用自己會的語言把它們實現一遍,也就是基本的那些增刪改查啥玩意的,然後就是數據結構的進一步學習了,我們就可以進行專題形式的做題,也就是多做一些數據結構相關的題目,這個時候可以去一些刷題網站。

這個時候基本數據結構你都差不多了,那麼做題的同時就可以搞算法了,有的人建議算法這塊直接刷題就行了,畢竟基本的數據結構都差不多了,但是吧,我覺得你只會數據結構,還不適合直接去刷算法題,最起碼你得會一些常見的算法思想,比如遞歸,枚舉和動態規劃啥的吧,而且這些還不是那麼容易學得懂的知識。

所以啊,我覺得刷題的最佳時機就是你把數據結構和算法的基礎知識都給學了,也就是那些基礎的,大衆熟知的,你該會的都得會啊,然後就可以大量做題刷題,這樣你的數據結構與算法能力就會不斷提升了。

總結起來就是先搞定數據結構,概念啥的必須會,要有自己的理解,然後自己動手實現一遍,多畫圖,然後多做題,接着學習一些常見算法,理解其常用算法思想,然後結合數據結構,大量刷題,不斷進階打怪……

到了這裏,再給你說點實在話,也許你看了我上面說的,覺得內心信心滿滿,決定我要開幹了,但是,大部分也都是三分熱度,然並卵的存在,如果你真的有計劃學習數據結構與算法的話,你之前肯定看過不少這塊的經驗之談了,可是你又做了多少嘞,正所謂,懂得了很多道理,卻依然過不好自己的一生……

不過沒關係,你不用費那麼大勁,關注慶哥,跟着我一塊學習就對了,畢竟,咱們2020的目標,就是搞定數據結構與算法,你只要按時學習我發佈的文章,有問題留言交流就ok了,而我,儘量用大白話去給你講解這些晦澀難懂的知識。

這塊估計有些朋友還不瞭解,我搞了個公衆號,主要就是帶着大家學習Java,我這個學習很特殊,就是我會和讀者們定期制定一個學習目標,然後集中一段時間對這個知識點進行專題形式的學習,就是系統化的把這個知識點學習一遍,而且所有文章我還會整理成PDF供大家下載學習,2020,我們就搞數據結構與算法,很適合新手們,因爲我寫的文章大家都說特別容易理解!感興趣的,微信搜索“編碼之外”,或者加我微信H653836923,咱們一起交流學習數據結構與算法!

接下來就是重點啦,那就是數據結構與算法,我們該學習哪些東西呢?針對我們這種患有嚴重技術焦慮的人,學習一個東西之前,一定要有個學習規劃,你得知道你每天要搞啥,搞完這個接下來該搞啥,所以對於數據結構與算法這塊的學習,我們得明白自己需要學習哪些東西,自己心裏先有個普。

我們需要學習哪些知識點?(附有思維導圖)

如果我們決定要開始學習數據結構與算法了,除了知道一些基本的學習技巧之外,比如上面我分享的,然後知道一些大概的學習步驟,那具體的我們該學習哪些知識點嘞?這個蠻重要的,經過我的多方收集與諮詢,最終確定瞭如下這些你必知必會的知識點,先來個圖吧:

在這裏插入圖片描述
看起來是不是沒有多少東西啊,咋一看確實如此,但是實際上啊,有些點我沒有展開來講,不然包含的東西太多了,我怕把你嚇跑了,接下來我就簡單的做一下介紹:

基礎中的基礎

複雜度

想必瞭解過數據結構與算法的,一定聽說過時間複雜度和空間複雜度吧,也就是那什麼大O表示法,這個可以說是學習數據結構與算法必備的一個知識點,理解它,非常有必要,這是最基礎的一步,後面很多算法,我們都要去衡量它,那就需要這個知識,我之前寫了一篇,你可以先去看看:

聽說數據結構與算法中的複雜度很難理解?看看這個吧!

基礎的數據結構

這塊就是我們最開始進行學習的了,也就是我們必須要掌握的那些個數據結構,主要有:

  1. 數組
  2. 鏈表
  3. 棧和隊列
  4. 哈希表
  5. 字符串

其實吧,這裏你一定要重點關注的就是數組和鏈表,爲啥嘞,因爲其實很多其他的數據結構,比如棧和隊列,哈希表啥的,其底層還是數組和鏈表,也就是說啊,數組和鏈表是數據結構中的數據結構。

另外像樹和圖,展開的內容相對較多,也比較難,這個沒事,我們以後慢慢一起學習,爭取都給它搞懂,我此前也寫了一部分,你們可以先看看,是否能夠看得懂,可以給我留言或者直接加我微信,咱們一起交流哦

來吧!給你不一樣的數組深入講解!

鏈表不會?看這個立馬就懂!

輕輕鬆鬆學會棧和隊列(附有順序棧的實現思路分析)

來吧!一文徹底搞定哈希表!

來吧!一文徹底搞定數據結構之樹!

看了這篇對二叉樹的介紹,除了不會寫代碼啥都會!!!

Java代碼實戰:通過手寫一個單鏈表,告訴你學習編程的方法和捷徑!

有不懂的記得聯繫我哦!

那些需要了解的算法

說到算法這塊,就有點高深了,最起碼很多人都這樣覺得啊,不信你看看這些詞:

  1. 貪心算法
  2. 分治法
  3. 動態規劃
  4. 回溯與遞歸
  5. 分支限界法
  6. 線性規劃網格流

你看看,我都覺得這是本武功祕密啊,各種內功心法,大家都說,數據結構與算法就是每個程序員的內功,我覺得這話一點也不假啊,就衝着名字,也不騙你們啊。

而且啊,這其中每一個展開來都有很多的內容,比如貪心算法中的最優裝載問題,還有揹包問題和最小生成樹等等。

然後還有分治法中的二分搜索技術和一些排序的問題,另外還有動態規劃中的0-1揹包問題……

反正吧,牽涉到算法,那其實就是默認你已經搞定數據結構了,這時候就是上升到一個思想和整體的應用層面了,我們學習的面也變廣了,當然,學習的內容多了,可能也變得更難了……

不過這纔有挑戰嘛!

來個總結吧

其實我還是想和大家說:

即使懂得了很多道理,但未必過得好自己的一生

啥意思嘞,想必大家一定看多各種學習指南,方法與經驗,當時看的時候如獲珍寶,但是自己實際上好像啥也沒做,其實吧,還是不知道該怎麼做,就像我上面說的那些,也許你們看了,覺得有用,有指導意見,一些新手可能會說,我可以跟着這個指南來學習,但是相信我,你撐不過三天,依然覺得迷茫,彷徨,有難度……

你可能會說,那麼扎心的嗎,現實就是如此啊,不是我扎心,說白了,很多人的自學能力很差,這表現在自己的自控自律與自我規劃都不行,這是我們所受的教育決定的……

那你可能要問了,那咋辦,我還要學習數據結構與算法嘞,沒事啊,我都說了,我會從零到一的寫一份適合新手從零開始不斷進階的數據結構與算法的教程,其實說白了,我是與大家一起學習,只不過我寫你們看,你們反饋,我們交流,大家一起不斷試錯,一起進階,2020,我的目標就是要搞定數據結構與算法!

感興趣的來哦,在公衆號可以獲取整理好的PDF,方便你們學習!

整理了20本經典數據結構與算法書籍送給你們

話不多說,免費送給你們,在我的公衆號後臺回覆“數據結構與算法”即可獲取!

在這裏插入圖片描述

感謝閱讀

大學的時候選擇了自學Java,工作了發現吃了計算機基礎不好的虧,學歷不行這是沒辦法的事,只能後天彌補,於是在編碼之外開啓了自己的逆襲之路,不斷的學習Java核心知識,深入的研習計算機基礎知識,所有心得全部書寫成文,整理成有目錄的PDF,持續原創,PDF在公衆號持續更新,如果你也不甘平庸,那就與我一起在編碼之外,不斷成長吧!

其實這裏不僅有技術,更有那些技術之外的東西,比如,如何做一個精緻的程序員,而不是“屌絲”,程序員本身就是高貴的一種存在啊,難道不是嗎?

非常歡迎你的加入,未來的日子,編碼之外,有你有我,一起做一個人不傻,錢很多,活得久的快樂的程序員吧!

回覆關鍵字“PDF”,獲取技術文章合集,已整理好,帶有目錄,歡迎一起交流技術!

另外回覆“慶哥”,看慶哥給你準備的驚喜大禮包,只給首次關注的你哦!

任何問題,可以加慶哥微信:H653836923,另外,我有個交流羣,我會***不定期在羣裏分享學習資源,不定時福利***,感興趣的可以說下我邀請你!

對了,如果你是個Java小白的話,也可以加我微信,我相信你在學習的過程中一定遇到不少問題,或許我可以幫助你,畢竟我也是過來人了!

在這裏插入圖片描述

感謝各位大大的閱讀🥰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章