為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法
- 基礎(chǔ)知識(shí)就像是一座大樓的地基怔揩,它決定了我們的技術(shù)高度棍丐。而要想快速做出點(diǎn)事情,前提條件一定是基礎(chǔ)能力過(guò)硬沧踏,“內(nèi)功”要到位歌逢。
- 掌握了數(shù)據(jù)結(jié)構(gòu)與算法,你看待問(wèn)題的深度翘狱,解決問(wèn)題的角度就會(huì)完全不一樣
- 不需要自己實(shí)現(xiàn)秘案,并不代表什么都不需要了解。
- 業(yè)務(wù)開(kāi)發(fā)工程師潦匈,你真的愿意做一輩子 CRUD boy 嗎阱高?
數(shù)據(jù)結(jié)構(gòu)與算法的意義,以及聯(lián)系
- 從廣義上講茬缩,數(shù)據(jù)結(jié)構(gòu)就是指一組數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)赤惊。算法就是操作數(shù)據(jù)的一組方法。
- 數(shù)據(jù)結(jié)構(gòu)是為算法服務(wù)的凰锡,算法要作用在特定的數(shù)據(jù)結(jié)構(gòu)之上未舟。比如,因?yàn)閿?shù)組具有隨機(jī)訪問(wèn)的特點(diǎn)掂为,常用的二分查找算法需要用數(shù)組來(lái)存儲(chǔ)數(shù)據(jù)裕膀。但如果我們選擇鏈表這種數(shù)據(jù)結(jié)構(gòu),二分查找算法就無(wú)法工作了勇哗,因?yàn)殒湵聿⒉恢С蛛S機(jī)訪問(wèn)昼扛。
如何高效學(xué)習(xí)
1 首先要掌握一個(gè)數(shù)據(jù)結(jié)構(gòu)與算法中最重要的概念——復(fù)雜度分析。
2 其次欲诺,抓住重點(diǎn)抄谐,提升效率
image.png
10 個(gè)數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表扰法、棧蛹含、隊(duì)列、散列表迹恐、二叉樹(shù)挣惰、堆、跳表殴边、圖、Trie 樹(shù)珍语;
10 個(gè)算法:遞歸锤岸、排序、二分查找板乙、搜索是偷、哈希算法拳氢、貪心算法、分治算法蛋铆、回溯算法馋评、動(dòng)態(tài)規(guī)劃、字符串匹配算法刺啦。
3 要學(xué)習(xí)它的“來(lái)歷”“自身的特點(diǎn)”“適合解決的問(wèn)題”以及“實(shí)際的應(yīng)用場(chǎng)景”
4 邊學(xué)邊練留特,適度刷題
5 多問(wèn)、多思考玛瘸、多互動(dòng)
6 知識(shí)需要沉淀蜕青,給自己設(shè)立一個(gè)切實(shí)可行的目標(biāo)
數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)書單
image.png