1.圖搜索算法(BFS,DFS),深度優先搜索尤爲重要,由於它能給出不少圖的結構信息。html
2.排序算法(比較排序和桶排序思想)程序員
3.通用的動態規劃算法正則表達式
4.匹配算法和網絡流算法算法
5.正則表達式和字符串匹配算法網絡
1.圖,尤爲是樹結構特別重要。數據結構
2.Maps結構數據結構和算法
3.Heap結構學習
4.Stacks/Queues結構spa
5.Trie樹.net
其餘一些相對比較經常使用的數據算法還有:貪心算法、Prim’s / Kruskal’s算法、Dijkstra’s最短路徑算法等等。
頗有意思的話:
「咱們不須要你在不參考任何資料,可以實現紅黑樹;咱們須要的是你能在實踐當中,選擇恰當的數據結構完成程序開發;在必要的時候,能在已有的數據結構基礎上進行適當改進,知足工程須要。但要作到這一點,你須要掌握基礎的算法和數據結構,你須要理解並應用一些高級數據結構和算法的思想。所以,在程序員這條道路上,你要想走得更遠,你須要活用各類數據結構,你須要吸取知名算法的一些思想,而不是死記硬背算法自己。」
1)什麼叫作理解算法了思想?
2)怎麼樣才能活用各類數據結構?
你能很清楚的知道何時用hash表,何時用堆或者紅黑色?在什麼應用場景下,能用紅黑色來代替hash表麼?要作到這些,你須要理解紅黑樹、堆、hash表各有什麼特性,彼此優缺點等,不然你不可能知道何時該用什麼數據結構。
另外,保存一個關於算法、數據結構學習總結的乾貨文章:
http://blog.csdn.net/v_july_v/article/details/6543438
向博主v_JULY_v致敬!