我在夏天学习数据分析和算法。
问题是:用n来表示x=x+1语句的执行次数。

for i = 1 to 526
    for j = 1 to n^2(lgn)^3
       for k = 1 to n
           x=x+1

我对如何找到答案感到困惑第一行是526,第二行显然是n^2乘以(lgn)^3,但那可能是3(n^2)lgn吗然后第三行是n,所以它们的组合是526*n^3(lgn)^3,加上n就等于。我不确定。
同时也要确保我理解我遇到的这类问题
for i = 1 to |nlgn|
    for j = 1 to i
        x=x+1

答案是nlgn,因为第二行的i不重要,对吧?

最佳答案

回答第一部分:

for i = 1 to 526
for j = 1 to n^2(lgn)^3
   for k = 1 to n
       x=x+1

此程序将运行526*n^2*(lg n)^3*n次=526*n^3*(lg n)^3次。
所以,x=x+1将被执行526*n^3*(lgn)^3次。
说到大θ符号,
当n>1时,n总是大于(lgn),所以,
  c1 * n^3 <= 526 * n^3 * (lg n)^3 <= c2 * n^3 * (lg n)^3

对于一些正常数c1526,大θ表示法是
θ(n^3*(lg n)^3)。
回答第二部分,
for i = 1 to |nlgn|
for j = 1 to i
    x=x+1

你的假设是完全错误的由j引导的内环对于x=x+1语句的求值也是必需的,因为它是内环的主体,而内环本身就是外环的主体。
所以,这里,x=x+1将被计算为
= 1 + 2 + ... + n*(lg(n) times
= [n*lg(n) * {n*lg(n)}+1]/2 times.

关于algorithm - 用n表示,θ= x + 1执行过几次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30341014/

10-12 19:38