“資料結構”是計算機學科各個專業的一門重要的專業基礎課程。很多人對於資料結構的應用,常見的資料結構和演算法沒有全面的認知和理解,本文為大家整理了一些實踐中最常用的演算法和機構,供大家參考:
在學習瞭解這些資料結構和演算法之前,引用一位前輩的話:
“我們不需要你能不參考任何資料,實現紅黑樹;我們需要的是你能在實踐當中,選擇恰當的資料結構完成程式開發;在必要的時候,能在已有的資料結構基礎上進行適當改進,滿足工程需要。但要做到這一點,你需要掌握基礎的演算法和資料結構,你需要理解並應用一些高階資料結構和演算法的思想。因此,在程式設計師這條道路上,你要想走得更遠,你需要活用各種資料結構,你需要吸收知名演算法的一些思想,而不是死記硬背演算法本身。”
那麼,工程實踐當中,最常用的演算法和資料結構有哪些?
以下是Google工程師Arjun Nayini在Quora給出的`答案,得到了絕大多數人的贊同。
最常用的演算法
1.圖搜尋演算法(BFS,DFS)
2.排序演算法
3.通用的動態規劃演算法
4.匹配演算法和網路流演算法
5.正則表示式和字串匹配演算法
最常用的資料結構
1樹結構特別重要
結構
結構
ks/Queues結構
s樹
其他一些相對比較常用的資料演算法還有:貪心演算法、Prim’s / Kruskal’s演算法、Dijkstra’s最短路徑演算法等等。
怎麼樣才能活用各種資料結構?
你能很清楚的知道什麼時候用hash表,什麼時候用堆或者紅黑色?在什麼應用場景下,能用紅黑色來代替hash表麼?要做到這些,你需要理解紅黑樹、堆、hash表各有什麼特性,彼此優缺點等,否則你不可能知道什麼時候該用什麼資料結構。
常言道:
程式=演算法+資料結構
程式≈資料結構