【问题标题】:How to analyze the efficiency of this algorithm如何分析这个算法的效率
【发布时间】:2012-10-04 02:15:45
【问题描述】:
FUNCTION SEEK(A,X)
1. FOUND = FALSE
2. K = 1
3. WHILE (NOT FOUND) AND (K < N)
   a.  IF (A[K] = X THEN
       1.  FOUND = TRUE
   b.  ELSE
       1.  K = K + 1
4. RETURN

分析这个算法(伪代码),我可以计算完成所需要的步数,并以线性算法 Θ(n) 来分析它的效率。好的。

以下代码依赖于循环内的内部公式才能完成:

1.  X = 1
2.  B = 1
3.  UNTIL (B > 100)
    a.  B = 2A - 2
    b.  A = A + 3

显然它不像第一个那么简单,我不能说循环重复 100 次,因为循环内 A 和 B 的增量不规则。我如何计算这个特定算法的步数以研究它的效率?

【问题讨论】:

  • 在第二种算法中,哪些输出可以改变大小? XA? X 和算法有什么关系?

标签: algorithm performance big-theta


【解决方案1】:

B 依赖于 A。 A 单调递增。 因此,循环以线性时间运行,具体取决于 A 的初始值。 一个小代数会告诉你 A 的什么值停止循环。

【讨论】:

  • A的初始值越大,算法耗时越少
  • 是的,这很有意义。谢谢你们。
猜你喜欢
  • 2010-12-20
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 2012-04-01
相关资源
最近更新 更多