如何分析该算法的效率第2部分

时间:2012-10-05 21:35:09

标签: performance big-theta

我之前解释过这个问题的方式发现了一个错误,所以这里再说一次:

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),线性算法。行。

下面的代码依赖于循环内部的公式来完成,交易是代码中没有变量N,因此我们分配值时该算法的效率总是相同的A和A均为1 B变量:

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

现在我相信这个算法总是在恒定的时间内执行。但是我如何使用代数来找出完成所需的步骤?

1 个答案:

答案 0 :(得分:2)

是的,第二部分在O(1)时间运行。您需要证明的唯一参数是每次迭代一定次数。

代数A每次增长3,所以B每次增长6。它将执行大约100/6次。