嚴(yán)蔚敏的數(shù)據(jù)結(jié)構(gòu)太難了 一個(gè)實(shí)力超群的程序猿必須知道的數(shù)據(jù)結(jié)構(gòu)有哪些?
一個(gè)實(shí)力超群的程序猿必須知道的數(shù)據(jù)結(jié)構(gòu)有哪些?算法圖搜索 (廣度優(yōu)先、深度優(yōu)先)深度優(yōu)先特別重要排序動(dòng)態(tài)規(guī)劃匹配算法和網(wǎng)絡(luò)流算法正則表達(dá)式和字符串匹配數(shù)據(jù)結(jié)構(gòu)圖 (樹尤其重要)Map堆棧/隊(duì)列Trie
一個(gè)實(shí)力超群的程序猿必須知道的數(shù)據(jù)結(jié)構(gòu)有哪些?
算法
- 圖搜索 (廣度優(yōu)先、深度優(yōu)先)深度優(yōu)先特別重要
- 排序
- 動(dòng)態(tài)規(guī)劃
- 匹配算法和網(wǎng)絡(luò)流算法
- 正則表達(dá)式和字符串匹配
數(shù)據(jù)結(jié)構(gòu)
- 圖 (樹尤其重要)
- Map
- 堆
- 棧/隊(duì)列
- Tries | 字典樹
額外推薦
- 貪婪算法
- 概率方法
- 近似算法
下面這個(gè)沒有特定優(yōu)先級
算法:
- 三路劃分-快速排序
- 合并排序(更具擴(kuò)展性,復(fù)雜度類似快速排序)
- DF/BF 搜索 (要知道使用場景)
- Prim / Kruskal (最小生成樹)
- Dijkstra (最短路徑算法)
- 選擇算法
數(shù)據(jù)結(jié)構(gòu)
- HashMap (真的要知道所有哈希結(jié)構(gòu))
- 圖和樹(紅黑樹很好學(xué)) (red-black trees are good to learn)
- 堆(優(yōu)先級隊(duì)列)
- 棧/隊(duì)列(必須知道的基礎(chǔ)內(nèi)容)
- Tries | 字典樹
A *和遺傳算法也很有趣。
我現(xiàn)在沒學(xué)完C語言,但是學(xué)校已經(jīng)開了數(shù)據(jù)結(jié)構(gòu)課程,感覺像聽天書一樣,如何更好地理解數(shù)據(jù)結(jié)構(gòu)?
第一,我覺得作為一個(gè)大學(xué)生,自學(xué)能力很強(qiáng)。對于C語言沒有學(xué)完,可以自己抽時(shí)間認(rèn)真學(xué)會。不會的可以到圖書館查閱資料,或者上網(wǎng)也可以自學(xué)?,F(xiàn)在網(wǎng)絡(luò)平臺有好多優(yōu)質(zhì)資源,你可以試試。
第二,數(shù)據(jù)結(jié)構(gòu)的算法比較抽象,必須認(rèn)真研究。他是編程序的依據(jù),這與C語言沒有必然的聯(lián)系。只是用C語言可以實(shí)現(xiàn)一些算法。也可以用別的語言實(shí)現(xiàn)。
第三,要對自己有信心。不會的問題可以和老師,同學(xué)交流。既然選擇好專業(yè),就應(yīng)該深入研究。
這就是我的一些看法,希望能夠幫到你!