各位程式設計師同學們,這篇文章將為您分享乙個全面的資料結構和演算法基礎的主題列表,希望對各位所有幫助。
陣列這簡直是世界上最常用的資料結構,沒有陣列的知識,程式設計師肯定會嘲笑你。對於陣列技能,您應該關注的是:
搜尋:線性搜尋和二分搜尋絕對是必不可少的知識。
排序:學習一些排序演算法以及它們之間的權衡。 您可以從氣泡排序和選擇排序等簡單的排序開始,但絕對應該具備插入排序、歸併排序和快速排序的知識。
多維陣列:不要只侷限於一維陣列,你也可以使用二維陣列,俗稱矩陣,但你很少超越二維陣列(除非你在資料科學領域)。
鍊錶如果您試圖進入實際程式設計,鏈結列表並不是那麼有用,讓人們可以安全地跳過它。 但對於試圖進入 fang(mang、mimanng 或其他任何你想稱呼他們)的人來說,這是一項必備技能。從單鏈表開始,然後轉到雙鏈表和迴圈鍊錶。您還應該練習有關遍歷、相交鍊錶、合併鍊錶和反轉鍊錶的問題。儘管鍊錶的使用很少見,但它們的乙個很酷的應用是在建立快取時
堆疊、佇列和雙端佇列
有時它們也被稱為偽資料結構,因為它們不需要嚴格的排序,例如陣列中的連續記憶體塊或鍊錶的指標結構。
堆疊、佇列和雙端佇列可以使用陣列和鍊錶來實現。 唯一的要求是遵循 lifo、fifo 和 deque 正規化(儘管鍊錶比陣列更適合實現)。在大多數情況下,對這些資料結構有一些實踐經驗就足夠了。
雜湊對映和雜湊列表
樹木樹是非常有用的資料結構,尤其是在儲存分層資料時。有一些常用的特定型別的樹:
二叉樹:二叉樹是一棵樹,其中每個節點最多有兩個孩子。
二叉搜尋樹:二叉搜尋樹是一棵二叉樹,其中所有節點的排列方式是節點的左子樹只包含鍵小於節點鍵的節點,右子樹包含鍵大於節點的節點 比節點的金鑰。
trie:trie,也稱為字首樹,是一種樹資料結構,通常用於預處理一組字串。
對於樹,您應該學習遍歷、搜尋和節點插入。很少需要通用樹的知識,但如果您是 web 開發人員,這將是您**庫中的重要資產。 它將幫助您了解 dom 的操作方式,甚至以程式設計方式建立複雜的巢狀 ui,而無需對其進行硬編碼。
圖表圖也是很少用於面試和實際程式設計的資料結構。 它們通常用於資料分析和視覺化。
地圖軟體和社交**分析師等一些高階應用程式廣泛使用圖表。
遍歷、搜尋和最短路徑(尤其是 dijkstra 演算法)是圖領域所需的最關鍵技能。
演算法除了特定於資料結構的演算法之外,需要熟悉的一些關鍵範例是:
遞迴:遞迴是一種解決計算問題的方法,其中解決方案取決於同一問題的微小例項的解決方案。
貪心:貪心演算法是一種通過選擇當前可用的最佳選項來解決問題的方法
動態規劃:動態規劃是一種將問題分解為子問題並儲存結果以備將來使用的技術,這樣我們就不需要再次計算結果。
回溯:一種遞迴技術,用於逐步構建解決方案,一次乙個,刪除那些在任何時間點無法滿足問題約束的解決方案。
程式設計師基礎演算法
1.a 搜尋演算法 圖形搜尋演算法,從給定起點到給定終點計算出路徑。其中使用了一種啟發式的估算,為每個節點估算通過該節點的最佳路徑,並以之為各個地點排定次序。演算法以得到的次序訪問這些節點。因此,a 搜尋演算法是最佳優先搜尋的範例。2.集束搜尋 又名定向搜尋,beam search 最佳優先搜尋演算...
程式設計師資料結構筆記2
第二天 轉眼又過了一周了,前面一周裡面我編了一些程式 鍊錶,長整型數相加,三元組表轉置以及一些簡單的函式.其實有些演算法想想是很簡單,不過寫起來還是需要一定耐心和c基礎的,如果你自己覺得各演算法都很懂了,不妨開機編編試試.或許會有一些新的發現與體會.棧和佇列 1 知識點 棧的定義 操作受限的線性表 ...
程式設計師資料結構筆記4
第四天 列舉 揹包問題 列舉策略 1 可能的方案 2n 2 對每一方案進行判斷.列舉法一般流程 while 還有其他可能方案 列舉策略 例 把所有排列列舉出來 p6 6 min 123456 max 654321 a1a2a3a4a5a6 下一排列 比如 312654的下和種情況 314256 遞迴...