抓住重點(diǎn)次舌,系統(tǒng)高效地學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法
1. 什么是數(shù)據(jù)結(jié)構(gòu)?什么是算法兽愤?
- 廣義上講彼念,數(shù)據(jù)結(jié)構(gòu)就是指一組數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合浅萧。算法就是操作數(shù)據(jù)的一組方法逐沙。(數(shù)據(jù)結(jié)構(gòu)有很多定義,這里只是一種)
- 狹義上講洼畅,是指某些著名的數(shù)據(jù)結(jié)構(gòu)和算法吩案,比如隊(duì)列、棧帝簇、堆徘郭、二分查找靠益、動(dòng)態(tài)規(guī)劃等。都是前人智慧的結(jié)晶残揉。都是前人從很多實(shí)際操作場(chǎng)景中抽象出來(lái)的胧后,經(jīng)過(guò)非常多的求證和驗(yàn)檢,可以高效地幫助我們解決很多實(shí)際開發(fā)問(wèn)題抱环。
- 數(shù)據(jù)結(jié)構(gòu)和算法相輔相成壳快,數(shù)據(jù)結(jié)構(gòu)是為算法服務(wù),算法要作用在特定的數(shù)據(jù)結(jié)構(gòu)之上江醇。比如因?yàn)閿?shù)組具有隨機(jī)訪問(wèn)的特性濒憋,常用的二分查找算法需要用數(shù)組來(lái)存儲(chǔ)數(shù)據(jù),但如果選擇鏈表這種數(shù)據(jù)結(jié)構(gòu)陶夜,二分查找就無(wú)法工作了凛驮。
2. 最重要的概念-復(fù)雜度分析
3.20個(gè)最常用、最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)
- 10個(gè)數(shù)據(jù)結(jié)構(gòu):數(shù)組条辟、鏈表黔夭、棧、隊(duì)列羽嫡、散列表本姥、二叉樹、堆杭棵、跳表婚惫、圖、Trie樹魂爪;
- 10個(gè)算法:遞歸先舷、排序、二分查找滓侍、搜索蒋川、哈希算法、貪心算法撩笆、分治算法捺球、回溯算法、動(dòng)態(tài)規(guī)劃夕冲、字符串匹配算法氮兵。
4.學(xué)習(xí)的方法
- 邊學(xué)邊練、適度刷題
- 多問(wèn)耘擂、多思考胆剧、多互動(dòng)
- 打怪升級(jí)學(xué)習(xí)法;在枯燥的學(xué)習(xí)過(guò)程中,也可以給自己設(shè)立一個(gè)切實(shí)可行的目標(biāo).
- 知識(shí)需要沉淀秩霍、不要想試圖一下子掌握所有篙悯。
5.個(gè)人總結(jié)
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)別無(wú)他法,唯有堅(jiān)持下去铃绒,思路比記憶更重要鸽照,思考比動(dòng)手更有效,每天給自己提一點(diǎn)問(wèn)題颠悬,然后去解決它矮燎。將知識(shí)結(jié)構(gòu)化剛在腦海中。日拱一卒赔癌,不期速成诞外。