问题
证明分析
| 证明: | 假设T(n)=O(nlgn),带入T(n)中可得 所以T(n)<=2c(n/2+17)lg(n/2+17)+n=cnlg(n+34)+34clg(n+34)-cn-34c+n 显然这个不等式不能证明假设,我们调整假设为T(n)=O(nlg(n-34)) 根据假设得 T(n)<=2c(n/2+17)lg((n-34)/2)+n=cnlg(n-34)+34clg(n-34)-cn-34c+n<=cnlg(n-34)-[(c-1)n-68clgn] 因为多项式函数比指数函数增长的快,所以(c-1)n-68clgn >= 0,所以T(n)<=cnlg(n-34), 即 T(n)=O(nlg(n-34)) 又因为nlg(n-34)<nlgn,所以nlg(n-34)=O(nlgn),根据传递性得T(n)=O(nlgn) |
本文通过调整递归算法的假设条件,证明了特定递归关系式的解为O(nlgn)。首先尝试直接证明失败后,通过改变递推公式中的参数,最终成功证明了递归算法的时间复杂度为O(nlgn)。

760

被折叠的 条评论
为什么被折叠?



