如何使用大哦符号编写程序的复杂性?

时间:2017-02-28 16:09:12

标签: python-3.x

取自" MITx:6.00.1x计算机科学导论和使用Python编程"。

我正在做这个课程,在解决测验期间我遇到了问题。我是一个非常新的程序员,我对编程没有足够的想法。

  

在最坏的情况下运行程序2需要多少步骤?用n,输入x的大小表示你的答案。

 def program2(x):
    total = 0
    for i in range(1000):
        total = i

    while x > 0:
        x = x//2
        total += x

    return total

2 个答案:

答案 0 :(得分:0)

重写你的程序以获得自己的答案

def program(x):
    count = 0
    while x > 0:
        x = x // 2
        count += 1
    return count
  

x = 2 ** 31 => count = 32

     

x = 2 ** 10 => count = 11

。 。 。

结果:O(log n)

答案 1 :(得分:0)

在最好的情况下,x小于或等于0.我们首先执行一步的赋值total = 0。接下来,我们在范围(1000)循环中执行for i。该循环执行1000次并且在每次迭代时具有三个步骤(一个用于每次循环分配i,以及两个用于+ =操作)。我们接下来检查x> 0 - 不是这样我们不进入循环。为return语句添加一个步骤,在最好的情况下,我们执行1 + 3 * 1000 + 1 + 1 = 3003步。

在最坏的情况下,x是一个大的正数。在这种情况下,我们首先执行一步的赋值total = 0。接下来,我们执行第一个循环1000次(总共3000步),然后我们执行第二次循环(同时x> 0)n次。该循环有五个步骤(一个用于条件检查,x> 0,两个用于 - =和+ =操作)。当我们最终到达x = 0的点时,我们执行条件检查x> 0最后一次 - 因为它不是,我们不进入循环。为return语句添加一个步骤,在最坏的情况下,我们执行1 + 3 * 1000 + 5 * n + 1 + 1 = 5 * n + 3003步。