我對合並排序中的合併函數的運行時分析存在一些混淆。合併排序合併運行時間anaylsis
Merg(A,p,q,r)
1 n1=q-p+1
2 n2=r-q
3 let L[1..n1+1] and R[1..n2+1] be new arrays
4 for i=1 to n1
5 L[i] = A[p+i-1]
6 for j =1 to n2
7 R[j] = A[q+j]
8 L[n1+1] = infinity
9 R[n2+1] = infinity
10 i =0
11 j=0
12 for k=p to r
13 if L[i]<=R[j]
14 A[k]=L[i]
15 i=i+1
16 else A[k] = R[j]
17 j=j+1
在我的書,它說以下內容:看到,合併過程運行在O(n)的時間,其中n = R-P + 1,觀察到每個線1-3和8-11的需要一定的時間,第4-7行的for循環佔用O(n1 + n2)= O(n)時間,並且對於第12-17行的循環有n次迭代,每次迭代需要恆定的時間
我的問題是爲什麼第12-17行每次迭代需要不變的時間,並且不會影響運行時間,但是第4至7行的 不需要一定的時間。對我來說,似乎兩個循環都在做同樣的事情。有人可以幫我澄清一下嗎?謝謝!
OH WOW。 IM啞巴哈哈。出於某種原因,我想他們是嵌套的,這會使它成爲O(n^2),但它確實是2n,它只是O(n)。書的解釋絕對不是以最好的方式寫的,但我現在明白了。謝謝! – Wonger