一.分而治之二.歸併排序性能分析
假設求解規模爲n的問題耗時爲,當n=1,。當n>1時,根據分治法按以下步驟對問題進行處理:
- 分解:將規模爲n分解爲a個規模爲的問題,假設分解耗時爲;
- 求解:求解a個規模爲的問題,則求解這些問題的時間爲;
- 合併:將a個規模爲的問題合併。假設該過程耗時爲。
經過上述處理,可得到:
(1)
在歸併法中,分解、求解、合併操作的耗時如下
- 分解:分解操作爲,耗時爲常量,則。
- 求解:歸併法中,分解操作是將規模爲n的問題分解成2個規模爲的問題,則;
- 合併:歸併法的合併操作的僞代碼和耗時如表1所示,其中,明顯可得。
表1
MERGER(A,p,q,r) 代價 次數
- n1=q-p+1 c1 1
- n2=r-q c2 1
- 新建數組L和R c3 1
- for i=1 to n1 c4 n/2
- L[i]=A[p+i-1] c5 n/2
- for j=1 to n2 c6 n/2
- R[j]=A[q+j] c7 n/2
- L[n1+1]=∞ c8 1
- R[n2+1]=∞ c9 1
- i=1 c10 1
- j=1 c11 1
- for k = p to r c12 n
- if L[i]≤R[j] c13 n
- A[k]=L[i] c14 t
- i = i + 1 c15 t
- else A[k]=R[j] c16 n-t
- j = j + 1 c17 n-t
因此公式1可變成 (2)
公式(2)不斷迭代分解後可得:
假設經過k次分解後,達到規模爲1的問題,即,所以,代入上述公式可得