关于算法时间复杂度的小小疑问

passball 2011-01-11 11:23:23
上午在看这个小问题的时候被一个小问题迷惑了,比如:
1////// sum=0; (一次)
for(i=1;i<=n;i++) (n次 )
for(j=1;j<=n;j++) (n^2次 )
sum++; (n^2次 )
解:T(n)=2n^2+n+1 =O(n^2)
2//////////
for (i=1;i<n;i++)
{
y=y+1; ①
for (j=0;j<=(2*n);j++)
x++; ②
}
语句1的频度是n-1
语句2的频度是(n-1)*(2n+1)=2n^2-n-1
f(n)=2n^2-n-1+(n-1)=2n^2-2
该程序的时间复杂度T(n)=O(n^2).
////////////////////////////////////////////////////////
疑问:既然在算法1中for循环算作时间复杂度,分别为n和n^2,为什么在算法2中只是计算循环中的语句呢??十分不解。。。

...全文
121 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
在水一方 2011-01-13
  • 打赏
  • 举报
回复
时间复杂度是指执行频率最高的语句频度的同阶无穷大,所以时间复杂度只与调用频度的最高阶有关系。
用到的概念定义如下:
语句调用频度:语句可能重复执行的最大次数;
时间复杂度:设算法中所有语句的语句频度为t(n),f(n)是当n趋向于无穷大时与t(n)为同阶无穷大,则算法的时间复杂度T(n) = O(f(n));
zy020118 2011-01-11
  • 打赏
  • 举报
回复
其实算与不算都一样,因为时间复杂度都只算和的最高次项的次数,所以怎么算都没关系,最后只和最高次项有关

33,028

社区成员

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

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