演算法 演算法學習01

2021-09-24 02:17:45 字數 441 閱讀 1376

貪婪

可以理解為最簡單基礎的求解方式,特點是"短視性",從這個特點入手很容易理解每一步取其最優的原理。雖然最終結果不一定是最好的,但是一定是較好的而且是最簡便的。

因此在不過分追求最優結果或者對速度的要求高於結果的情況下,貪婪是不錯的選擇。

分治可以理解為大事化小小事好搞,與貪婪的每一步的"串聯"不同,分治考慮的是分成每一部分處理。

常見就是二分查詢與快排,因為涉及到二分,大部分為遞迴實現,且速度十分快。

因此,在任務可分拆結果可合併的情況,使用分治思想,分別完成函式的,遞迴終點,分拆遞迴,合併,這三部分,就可簡單的解決。

ps:最近見到的兩個題,求兩個有序數列合併後的中位數,就是比較典型的分治題。還有乙個題是乙個無序陣列分m段且每段求和,和裡面的取最大值,求最小的最大值,,,,有點繞,,不過看題目像是動態規劃的題,但是也可以在範圍內用二分嘗試分組看是否可行來取得最終答案。

漫畫演算法 學習筆記01

在計算機領域裡,演算法是一系列程式指令,用於處理特定的運算和邏輯問題。衡量演算法優劣的主要標準是時間複雜度和空間複雜度。資料結構是資料的組織 管理和儲存格式,其使用目的是為了高效的訪問和修改資料。資料結構包含陣列 鍊錶這樣的線性資料結構,也包含樹 圖這樣的複雜資料結構。資料結構 data struc...

演算法學習 01揹包問題

是慕課網的實戰演算法課程 動態規劃 相當於還是求n個物品的組合!暴力解法 每一件物品,都可以放進揹包,也可以不放進。複雜度是o 2 n n 對於每乙個組合,還要看看對應的總重是多少,看看是不是超過了容量c,從而看價值。組合方式都可以用遞迴的方式來求解。只是是能不能找到重疊子問題 最優子結構,從而轉換...

演算法學習 Union Find演算法

union find演算法有它的實際用途。多用於動態連通的應用場景。union find演算法是 給出兩個節點,判斷它們是否連通,如果連通,是不需要給出具體的路徑的 舉兩個例子作為主要表現 1 在網路連線中,當發現沒有連線的兩個節點,可以把他們連線起來,一旦節點都連線起來,又能把多餘的線拆除,這時候...