1. 程式人生 > >演算法之分治策略與應用

演算法之分治策略與應用

歸併排序中我們利用了分治策略,在分治策略中,我們遞迴求解一個問題,在每層遞迴中應用如下三個步驟:

  • 分解:將問題劃分為一些子問題,子問題的形式與原問題一樣,只是規模更小。
  • 解決:遞迴的求解出子問題。如果子問題的規模足夠小,則停止遞迴,直接求解。
  • 合併:將子問題的解組合成原問題的解。

當子問題足夠大,需要遞迴求解時,稱之為遞迴情況。當子問題變得足夠小,不需要再遞迴時,遞迴已經"觸底",進入了基本情況。有時,除了與原問題形式完全一樣的規模更小的子問題外,還需要求解與原問題不完全一樣的子問題。這些子問題的求解看做合併步驟的一部分。

此次我們會通過最大子陣列陣列最大元素兩個案例來深入理解分治策略

前菜:陣列最大元素問題

求解陣列中最大元素的方法有很多,從分治策略的思路角度去解決問題,會有不一樣的快感