时间复杂度计算问题

CWYC 2018-07-12 08:17:51
O(log2n)
i=1; ①
while (i<=n)
i=i*2; ②
解: 语句1的频度是1,
设语句2的频度是t, 则:nt<=n; t<=log2n
考虑最坏情况,取最大值t=log2n,
T(n) = 1 + log2n
f(n) = log2n
lim(T(n)/f(n)) = 1/log2n + 1 = 1
T(n) = O(log2n)

这句“nt<=n; t<=log2n”是什么意思?

2.O(n3)
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
for(k=0;k<j;k++)
x=x+2;
}
}
这题怎么算?
...全文
467 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CWYC 2018-07-14
  • 打赏
  • 举报
回复
谢谢楼上二位,我懂了!
donjin9 2018-07-13
  • 打赏
  • 举报
回复
可能是写错了吧,2^t<=n; t<=log2n
sghcpt 2018-07-13
  • 打赏
  • 举报
回复
楼主:
1.”这句“nt<=n; t<=log2n”是什么意思?”--->这句话的意思应该是假设2的t次方的值等于n,所以t的值等于以2为底n的对数,即t=log2n。
例子:如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数(logarithm),记作x=logaN。其中,a叫做对数的底数,N叫做真数。
2.题
“O(n3)
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
for(k=0;k<j;k++)
x=x+2;
}
}
这题怎么算? ”
这题有三层循环嵌套,你可以认为每个循环取最大值都为n,那么三层循环的最大执行次数应该是n x n x n即n^3,所以就是O(n^3)值了。
楼主可以看看算法相关的书籍,都有时间复杂度方面的说明。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧