实在不知道到哪里去问,就来这吧;初看数据结构,碰到个问题,请求大哥们帮忙

tailor2 2005-09-13 10:19:24
题目:设n为正整数,试确定下列各程序段中前置以记号@的语句的频度:(严蔚敏练习册上的题)
5. for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
for(k=1;k<=j;k++)
@ x+=delta;
}
}

6. x=n;y=0; //n是不小于1的常数
while(x>=(y+1)*(y+1))
{ @ y++;
}

1.9 假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)
int Time(int n)
{ count=0; x=2;
while(x<n/2)
{
x*=2; count++;
}
return (count)
}//Time

哪位大哥给看看,最好给写上解释,小弟这里谢谢啦

...全文
188 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmmcd 2005-09-19
  • 打赏
  • 举报
回复
5.
for(k=1;k<=j;k++)
频度:j

加一层for(j=1;j<=i;j++)
频度:1+...+i = i(1+i)/2

再加一层for(i=1;i<=n;i++)
频度:1(1+1)/2 + 2(1+2)/2 +...+ n(1+n)/2 = (n^3+3n^2+2n)/6 = n(n+1)(n+2)/6
boxer_tony 2005-09-16
  • 打赏
  • 举报
回复
5. n(n+1)(n+2)/6
xiaocai0001 2005-09-13
  • 打赏
  • 举报
回复
while(x>=(y+1)*(y+1))
条件实际上相当于 sqrt(x)>=(y+1)

所以执行次数是 sqrt(x)下取整
astrophor 2005-09-13
  • 打赏
  • 举报
回复
5 :
1+2+...+(n-2) + 1+2+..+(n-3) + .. + 1
=(n-1)(n-2)/2 + (n-2)(n-3)/2 + .. + 1
=1/2{ (n-2)(n-2)+(n-2) + (n-3)(n-3)+(n-3) + .. + 1 }
=1/2{ 1/6 (n-2)(n-3)(2n-3) + 1/2 (n-1)(n-2) }
=O(n^3/12)
6 :
O(n^1/2)
1.9 :
O(logn) count=logn-2
后面2个比较简单,自己慢慢看

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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