1. 程式人生 > >算法筆記:分治

算法筆記:分治

.html 過程 之間 算法筆記 相同 相互 最好 筆記 大於

分治

1.分解成規模更小的k的個子問題。

2.子問題之間相互獨立。

3.合並後與原問題相同。

Tips:最好子規模大致相同,會使過程更加簡單。

大多數情況下,對於分治法的時間復雜度:

1.n=1時,T(n) = O(1);

2.n>1時,T(n) - kT(n/m) + f(n)

如果f(n) = n^l

那麽就有T(n):

1.l<logmk,nlogmk

2.l=logmk,nllogn

3.l>logmk,nl

經典例子之歸並排序~

代碼地址:http://www.cnblogs.com/rimochiko/p/7587272.html

思路講解:

需要另外開辟空間來輔助,分為左邊和右邊,拿左邊的和右邊的去比較,然後把小的那個放入新開辟的空間內。

歸並算法的復雜度是:

1.n=1時,T(n) = O(1);

2.n>1時,2T(n/2) + O(n);

經典例子之快速排序~

代碼地址:http://www.cnblogs.com/rimochiko/p/7587476.html

思路講解:

把數組分成了三個集合,一個是小於的區域,一個是等於基準的區域,一個是大於的區域,然後再遞歸排序。

算法筆記:分治