数据结构频度问题

menghuan4869 2009-10-24 11:31:52


第一题:i=1;

while(i<=n)

i=i*2; (1)

设语句(1)的频度为f(n),则有:

2^f(n)<=n, 即f(n)<=log n,
2
取最大值f(n)=log n.
2
请问2^f(n)<=n是怎样得到的?


第二题:
a=0;b=1; (1)

for(i=2;i<=n;i++) (2)

{ (3)

s=a+b; (4)

b=a; (5)

a=s; (6)

}
其中语句(1)的频度是2;语句(2)的频度是n;语句(3)的频度是n-1;语句(4)的频度是n-1;语句(5)的频度是n-1.则该程序段的时间复杂度是T(n)=2+n+3*(n-1)=4n-1
请问语句(1)的频度是2是不是因为a=0执行了一次,b=1执行了一次?加起来就是2次?至于语句(2)的频度不应该是n-1吗?语句(3)的频度不应该是n-3吗?

请详细说明,谢谢!
...全文
370 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
menghuan4869 2009-11-04
  • 打赏
  • 举报
回复
至于i++和++i,其结果和执行效率应该一样吧?为什么说效率更高呢?反正一开始都是先执行i=2,然后执行内部循环的!然后下次循环执行i+1,此时i=2。
menghuan4869 2009-11-04
  • 打赏
  • 举报
回复
很感谢两位的回答,第一题我已经懂了,但是第二题的解释“i=n+1虽然为0 不进行内部循环”我就不太理解了,为什么当i=n+1为0?为什么此时不执行内部循环呢?请详细解释下,谢谢!
perfecttt 2009-11-01
  • 打赏
  • 举报
回复
第一题 i=i*2可以看出i是以2的指数方式增加的,即i=2*2*2···*2*(1) <=n;所以是有2^f(n) <=n
第二题 a=0;b=1;是两条语句,
另外对于for(i=2;i <=n;i++) (2) i++是先执行后自增,当i=n时循环内部执行完后还得执行i=n+1虽然为0 不进行内部循环

i++,建议改成++i,效率更高。
sxq310 2009-11-01
  • 打赏
  • 举报
回复
第一题 i=i*2可以看出i是以2的指数方式增加的,即i=2*2*2···*2*(1)<=n;所以是有2^f(n) <=n
第二题 a=0;b=1;是两条语句,
另外对于for(i=2;i <=n;i++) (2) i++是先执行后自增,当i=n时循环内部执行完后还得执行i=n+1虽然为0 不进行内部循环


第一章 绪论 一、选择题 1. 算法的计算量的大小称为计算的( ) 。 【北京邮电大学 2000 二、3 (20/8 分) 】 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于( ) 【中科院计算所 1998 二、1 (2 分) 】 A.问题的规模 B. 待处理数据的初态 C. A 和B 3.计算机算法指的是(1) ,它必须具备(2) 这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 【南京理工大学 1999 一、1(2 分) 【武汉交通科技大学 1996 一、1( 4 分) 】 4.一个算法应该是( ) 。 【中山大学 1998 二、1(2 分) 】 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A 和C. 5. 下面关于算法说法错误的是( ) 【南京理工大学 2000 一、1(1.5 分) 】 A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是( ) 【南京理工大学 2000 一、2 (1.5 分) 】 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模 n 下,复杂度 O(n)的算法在时间上总是优于复杂度 O(2 n )的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为( )两大类。 【武汉交通科技大学 1996 一 、4(2 分) 】 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是( ) 。 【北方交通大学 2000 二、1(2 分) 】 A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构( )?【北方交通大学 2001 一、1(2 分) 】 A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下那一个术语与数据的存储结构无关?( ) 【北方交通大学 2001 一、2(2 分) 】 A.栈 B. 哈希表 C. 线索树 D. 双向链表 11.在下面的程序段中,对 x 的赋值语句的频度为( ) 【北京工商大学 2001 一、10(3 分) 】 FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1; A. O(2n) B.O(n) C.O(n 2 ) D.O(log2 n ) 12.程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换; 其中 n 为正整数,则最后一行的语句频度在最坏情况下是( )

33,028

社区成员

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

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