æ¶é´å¤æ度æ¯æ»è¿ç®æ¬¡æ°è¡¨è¾¾å¼ä¸ånçååå½±åæ大çé£ä¸é¡¹(ä¸å«ç³»æ°)
æ¶é´å¤æ度就æ¯è¾å ¥è§æ¨¡nä¸è¿ç®æ¬¡æ°Tçå ³ç³»
T(n) = T = O(h)
h 为Tçæé«é¶
ä¾å¦å¨ä¸ä¸ªé¿åº¦ä¸ºnçæ°ç»arrayä¸æ¥æ¾ä¸ä¸ªç¡®å®çå¼k
for(int i=0; i<n; i++) {è¾å ¥è§æ¨¡ä¸ºnï¼å ³é®è¯å¥å°±æ¯ææ·±å±å¾ªç¯ç if è¯å¥
è¿ç®æ¬¡æ°(è¿éæ¯å¹³åæ¥æ¾æ¬¡æ°)ï¼T=(1+n)/2
å æ¤
T(n)=(1+n)/2=1/2+n/2=O(n)
ä¸é¢çä¾åæ¯ä¸è¾å ¥è§æ¨¡æå ³ç
å³ï¼è§æ¨¡å大æåå°ï¼è¿ç®æ¬¡æ°ä¹å大æåå°
å æ¤è¿è¦è®¡ç®æ好åæåçæ åµ
åå«æ¯æ¯è¾ 1次 å n次
æ¶é´å¤æ度为O(1)åO(n)
常è§çæ¶é´å¤æ度ï¼ææ°é级éå¢æåä¾æ¬¡ä¸ºï¼
常æ°é¶O(1)ã对æ°é¶O(log2n)ã线æ§é¶O(n)ã线æ§å¯¹æ°é¶O(nlog2n)ãå¹³æ¹é¶O(n^2)ãç«æ¹é¶O(n^3)ãk次æ¹é¶O(n^k)ãææ°é¶O(2^n)ãn^n
èè¯å¯è½è¿ä¼åºéå½çæ¶é´å¤æ度计ç®ï¼è¿ä¸ªä¸åäºï¼çç½ä¸çæ¹æ³ï¼
éå½ç®æ³çæ¶é´å¤æ度åæ
å¨ç®æ³åæä¸ï¼å½ä¸ä¸ªç®æ³ä¸å
å«éå½è°ç¨æ¶ï¼å
¶æ¶é´å¤æ度çåæä¼è½¬å为ä¸ä¸ªéå½æ¹ç¨æ±è§£ãå®é
ä¸ï¼è¿ä¸ªé®é¢æ¯æ°å¦ä¸æ±è§£æ¸è¿é¶çé®é¢ï¼èéå½æ¹ç¨çå½¢å¼å¤ç§å¤æ ·ï¼å
¶æ±è§£æ¹æ³ä¹æ¯ä¸ä¸è足ï¼æ¯è¾å¸¸ç¨çæ以ä¸åç§æ¹æ³ï¼
(1)代å
¥æ³(Substitution Method)
代å
¥æ³çåºæ¬æ¥éª¤æ¯å
æ¨æµéå½æ¹ç¨çæ¾å¼è§£ï¼ç¶åç¨æ°å¦å½çº³æ³æ¥éªè¯è¯¥è§£æ¯å¦åçã
(2)è¿ä»£æ³(Iteration Method)
è¿ä»£æ³çåºæ¬æ¥éª¤æ¯è¿ä»£å°å±å¼éå½æ¹ç¨çå³ç«¯ï¼ä½¿ä¹æ为ä¸ä¸ªééå½çåå¼ï¼ç¶åéè¿å¯¹åå¼ç估计æ¥è¾¾å°å¯¹æ¹ç¨å·¦ç«¯å³æ¹ç¨ç解ç估计ã
(3)å¥ç¨å
¬å¼æ³(Master Method)
è¿ä¸ªæ¹æ³é对形å¦âT(n) = aT(n/b) + f(n)âçéå½æ¹ç¨ãè¿ç§éå½æ¹ç¨æ¯åæ²»æ³çæ¶é´å¤ææ§æ满足çéå½å
³ç³»ï¼å³ä¸ä¸ªè§æ¨¡ä¸ºnçé®é¢è¢«åæè§æ¨¡å为n/bça个åé®é¢ï¼éå½å°æ±è§£è¿a个åé®é¢ï¼ç¶åéè¿å¯¹è¿a个åé´é¢ç解ç综åï¼å¾å°åé®é¢ç解ã
(4)å·®åæ¹ç¨æ³(Difference Formula Method)
å¯ä»¥å°æäºéå½æ¹ç¨çæå·®åæ¹ç¨ï¼éè¿è§£å·®åæ¹ç¨çæ¹æ³æ¥è§£éå½æ¹ç¨ï¼ç¶å对解ä½åºæ¸è¿é¶ä¼°è®¡ã
ä¸é¢å°±ä»¥ä¸æ¹æ³ç»åºä¸äºä¾å说æã
ä¸ã代å
¥æ³
大æ´æ°ä¹æ³è®¡ç®æ¶é´çéå½æ¹ç¨ä¸ºï¼T(n) = 4T(n/2) + O(n)ï¼å
¶ä¸T(1) = O(1)ï¼æ们çæµä¸ä¸ªè§£T(n) = O(n2 )ï¼æ ¹æ®ç¬¦å·Oçå®ä¹ï¼å¯¹n>n0ï¼æT(n) < cn2 - eO(2n)ï¼æ³¨æï¼è¿éåå»O(2n)ï¼å å
¶æ¯ä½é¶é¡¹ï¼ä¸ä¼å½±åå°n足å¤å¤§æ¶çæ¸è¿æ§ï¼ï¼æè¿ä¸ªè§£ä»£å
¥éå½æ¹ç¨ï¼å¾å°ï¼
T(n) = 4T(n/2) + O(n)
⤠4c(n/2)2 - eO(2n/2)) + O(n)
= cn2 - eO(n) + O(n)
⤠cn2
å
¶ä¸ï¼c为æ£å¸¸æ°ï¼eå1ï¼ä¸å¼ç¬¦å T(n)â¤cn2 çå®ä¹ï¼åå¯è®¤ä¸ºO(n2 )æ¯T(n)çä¸ä¸ªè§£ï¼åç¨æ°å¦å½çº³æ³å 以è¯æã
äºãè¿ä»£æ³
æç®æ³ç计ç®æ¶é´ä¸ºï¼T(n) = 3T(n/4) + O(n)ï¼å
¶ä¸T(1) = O(1)ï¼è¿ä»£ä¸¤æ¬¡å¯å°å³ç«¯å±å¼ä¸ºï¼
T(n) = 3T(n/4) + O(n)
= O(n) + 3( O(n/4) + 3T(n/42 ) )
= O(n) + 3( O(n/4) + 3( O(n/42 ) + 3T(n/43 ) ) )
ä»ä¸å¼å¯ä»¥çåºï¼è¿æ¯ä¸ä¸ªéå½æ¹ç¨ï¼æ们å¯ä»¥ååºè¿ä»£i次åçæ¹ç¨ï¼
T(n) = O(n) + 3( O(n/4) + 3( O(n/42 ) + ... + 3( n/4i + 3T(n/4i+1 ) ) ) )
å½n/4i+1 =1æ¶ï¼T(n/4i+1 )=1ï¼å
T(n) = n + (3/4) + (32 /42 )n + ... + (3i /4i )n + (3i+1 )T(1)
< 4n + 3i+1
èç±n/4i+1 =1å¯ç¥ï¼i<log4 nï¼ä»è
3i+1 ⤠3log4 n+1 = 3log3 n*log4 3 +1 = 3nlog4 3
代å
¥å¾ï¼
T(n) < 4n + 3nlog4 3ï¼å³T(n) = O(n)ã
ä¸ãå¥ç¨å
¬å¼æ³
è¿ä¸ªæ¹æ³ä¸ºä¼°è®¡å½¢å¦ï¼
T(n) = aT(n/b) + f(n)
å
¶ä¸ï¼aâ¥1åbâ¥1ï¼å为常æ°ï¼f(n)æ¯ä¸ä¸ªç¡®å®çæ£å½æ°ãå¨f(n)çä¸ç±»æ
åµä¸ï¼æ们æT(n)çæ¸è¿ä¼°è®¡å¼ï¼
1.è¥å¯¹äºæ常æ°Îµ>0ï¼æf(n) = O(nlogb a-ε )ï¼åT(n) = O(nlogb a )
2.è¥f(n) = O(nlogb a )ï¼åT(n) = O(nlogb a *logn)
3.è¥f(n) = O(nlogb a+ε )ï¼ä¸å¯¹äºæ常æ°c>1åææå
å大çæ£æ´æ°nï¼æaf(n/b)â¤cf(n)ï¼åT(n)=O(f(n))ã
设T(n) = 4T(n/2) + nï¼åa = 4ï¼b = 2ï¼f(n) = nï¼è®¡ç®å¾åºnlogb a = nlog2 4 = n2 ï¼èf(n) = n = O(n2-ε )ï¼æ¤æ¶Îµ= 1ï¼æ ¹æ®ç¬¬1ç§æ
åµï¼æ们å¾å°T(n) = O(n2 )ã
è¿éæ¶åçä¸ç±»æ
åµï¼é½æ¯æ¿f(n)ä¸nlogb a ä½æ¯è¾ï¼èéå½æ¹ç¨è§£çæ¸è¿é¶ç±è¿ä¸¤ä¸ªå½æ°ä¸çè¾å¤§è
å³å®ãå¨ç¬¬ä¸ç±»æ
åµä¸ï¼å½æ°nlogb a è¾å¤§ï¼åT(n)=O(nlogb a )ï¼å¨ç¬¬ä¸ç±»æ
åµä¸ï¼å½æ°f(n)è¾å¤§ï¼åT(n)=O(f (n))ï¼å¨ç¬¬äºç±»æ
åµä¸ï¼ä¸¤ä¸ªå½æ°ä¸æ ·å¤§ï¼åT(n)=O(nlogb a *logn)ï¼å³ä»¥nç对æ°ä½ä¸ºå åä¹ä¸f(n)ä¸T(n)çåé¶ã
ä½ä¸è¿°ä¸ç±»æ
åµå¹¶æ²¡æè¦çææå¯è½çf(n)ãå¨ç¬¬ä¸ç±»æ
åµå第äºç±»æ
åµä¹é´æä¸ä¸ªé´éï¼f(n)å°äºä½ä¸æ¯å¤é¡¹å¼å°å°äºnlogb a ï¼ç¬¬äºç±»ä¸ç¬¬ä¸ç±»ä¹é´ä¹åå¨è¿ç§æ
åµï¼æ¤æ¶å
¬å¼æ³ä¸éç¨