┏┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅☆
┇ 根據B站視頻以及教材做的筆記 ╹◡╹
┇ 視頻:https://www.bilibili.com/video/av19665344
┇ 教材:軟件設計師考試衝刺(習題與解答)
┗┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅☆
課程內容提要
分治法
- 分治法:把一個比較大而複雜的問題拆分成多個規模較小的子問題,解決問題的難度降低很多。
- 往往需要 遞歸 技術解決問題。
遞歸技術
二分查找法
回溯法
回溯法:深度優先的搜索法。
貪心法
- 貪心法:花有限的時間找出一個令人滿意的解,這個解不一定是最優解。性價比方案。
- 在揹包問題中,單位物品價值越高,越優先選。
動態規劃法
動態規劃法:與分治法相似,將原問題拆分成多個子問題。不同點在於動態規劃法基本需要查表。
試題
【問題1】
(1) j = 0;
(2) b [ j ] = b [ j ] + s [ i ];
(3) min = temp;
(4) b [ m ] = b [ m ] + s [ i ]。
【問題2】
整個時間複雜度以最高的爲準。
(5) 貪心法 ;(6) 貪心法 ;(7) O(n2);(8)O(n2)。
【問題3】
最優適宜策略僅局部達到最優,整體不一定達到最優。
(9) 5 ;(10) 4 ;(11) 否 。
【問題1】
(1) k<=r;
(2) arr [ k ] = right [ j ];
(3) begin<end;
(4) mergeSort(arr,mid+1,end)。
【問題2】
由於該題使用了歸併排序,且拆分成兩個子數組,分別排序後再合併起來。所以採用了分治法的算法設計策略。
時間複雜度爲O(nlogn)。
空間複雜度爲O(n)。
(5) 分治法;(6) T(n)=2T(n/2)+O(n);(7) O(n)。
【問題3】
(9) n1+n2