首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂性分析练习

复杂性分析练习
EN

Stack Overflow用户
提问于 2018-02-12 19:25:17
回答 1查看 68关注 0票数 0
代码语言:javascript
复制
mcSort(A,l,r)  
  if r-l+1<4   
      then QuickSort(A,l,r)  
      else mcSort(A,l,r-3)  
           mcSort(A,l+3,r)

这个练习要求我对上述算法的复杂性进行分析。

我的想法是

代码语言:javascript
复制
T(n)=2T(n-3)+θ(1)

经过k次迭代,我们有:

代码语言:javascript
复制
T(n)=2^k * T(n-3k)+θ(1)*k  

因此,当3k=n这样k=n/3时,我们有

代码语言:javascript
复制
= 2^(n/3) * θ(1) + θ(n) = θ(2^(n/3))  

这是正确和精确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-13 01:52:37

经过k次迭代,我们有: T(n)=2^k * T(n-3k)+θ(1)*k

不完全正确,因为在每次展开之后,添加的θ(1)倍数会加倍:

在这里,我们使用了几何级数求和的标准公式。注意,后面的术语不是k,而是2^k。但是,您的停止条件n = 3k是正确的,因此:

因此,您的最终结果是正确的,即使其中一个推理步骤是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48754036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档