1经磅、什么是數(shù)據(jù)結(jié)構(gòu)
廣義上講:數(shù)據(jù)結(jié)構(gòu)就是一組數(shù)據(jù)的存儲結(jié)構(gòu)泌绣。
狹義上講:隊列、棧预厌、堆阿迈、樹 等常用的數(shù)據(jù)結(jié)構(gòu)。
2配乓、什么是算法
算法(Algorithm)就是操作數(shù)據(jù)的一組方法仿滔。
一個算法的優(yōu)劣可以用空間復(fù)雜度與時間復(fù)雜度來衡量。
比如:二分查找法犹芹、遞歸算法、各種排序算法鞠绰。
3腰埂、數(shù)據(jù)結(jié)構(gòu)和算法的關(guān)系
兩者是相輔相成的。數(shù)據(jù)結(jié)構(gòu)為算法服務(wù)蜈膨,算法作用在特定的數(shù)據(jù)結(jié)構(gòu)之上屿笼。
比如:因為數(shù)組具有隨機訪問的特點,二分查找算法需要用數(shù)組來存儲數(shù)據(jù)翁巍,如果選擇鏈表存儲的話驴一,二分查找算法就無法工作。
4灶壶、為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法
為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法肝断,很多人第一想到的就是面試需要。這并沒有錯驰凛,只是太片面了【用大家的話就是‘’膚淺‘胸懈,沒有追求,哈哈哈’】恰响。
我列了以下幾點【當(dāng)然還有很多其他的因素】
1趣钱、通過大場面試,比如BAT等
2胚宦、寫出性能更優(yōu)的代碼
如果你是寫底層系統(tǒng)首有,各種框架的代碼燕垃,對性能就要求比較高了。比如Spring井联、Redis等等利术,在這其中就有很多的基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和算法的思想。
3低矮、可以懂得各種封裝接口印叁,代碼庫背后的原理,做到知其然知其所以然
如果你只是一個寫業(yè)務(wù)代碼的底層碼農(nóng)军掂,當(dāng)面臨選擇ArrayList 和LinkedList的時候轮蜕,這個你肯定清楚為什么選擇哪個吧。
4蝗锥、學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法后跃洛,你看待問題的深度、理解問題的角度完全不一樣
5终议、做一個有夢想汇竭、對編程有追求的碼農(nóng),要想自己的代碼有質(zhì)的變化穴张,要想自己突破自己细燎,必須學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法。
5皂甘、學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法難嗎玻驻?
我剛開始也覺得挺難的,感覺很難掌握偿枕,學(xué)了沒幾天就忘記了璧瞬。
其實不是這樣的,不是難渐夸,是懶嗤锉,我們總是三天打魚兩天曬網(wǎng),每次就是只停留在數(shù)組墓塌、鏈表瘟忱,而且還沒真正的掌握。
聞道有先后桃纯,很多只是你還不知道罷了酷誓,堅持學(xué)下去,相信你會有收獲的态坦。
6盐数、如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法?
重要的是堅持伞梯、挑重點學(xué)習(xí)玫氢,下面我會逐步的完善這個圖帚屉。