首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码O(nlog(n))的T(n)是怎样的?

代码O(nlog(n))的T(n)是怎样的?
EN

Stack Overflow用户
提问于 2014-10-05 11:45:50
回答 2查看 98关注 0票数 4

我没有得到第二个for循环的T(n)是log(n)的部分。这两个循环都是由i连接的,confusing.How是使用基本乘积规则的代码O(nlog(n))的T(n)吗?

代码语言:javascript
复制
for(i = 1; i <= n; i++)
{
   for(j = 1; j <= n; j = j + i)
   {
      printf("Hi");
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-05 11:55:06

对于i=1,内循环执行n次数。对于i=2,内环执行n/2时间等等。运行时间是T(n) = n + n/2 + n/3 + ... + n/n。这等于n(1 + 1/2 + 1/3 + ...+ 1/n) = nH(n),其中H(n)是第n次调和数。H(n) ~ lg n导致了O(n lg n)的运行时间。

票数 5
EN

Stack Overflow用户

发布于 2014-10-05 11:53:05

代码语言:javascript
复制
for(i = 1; i <= n; i++)  // Executes n times
{    
    for(j = 1; j <= n; j = j + i)
    {   // This loop executes j times with j increases by rate of i
        printf(“Hi”);
    }
}

内环对n/i的每个值执行i时间。它的运行时间为1,n中所有nxSum(n/i)i

=> O(nlogn)

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

https://stackoverflow.com/questions/26202317

复制
相关文章

相似问题

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