最坏情况运行时

时间:2018-11-08 04:58:26

标签: runtime master-theorem

Question

第6行在最坏的情况下运行T(n / 2)次。

第8行在最坏的情况下运行T(n / 2)次。

所以,T(n / 2)+ T(n / 2)+ d(+ d:用于次要恒定时间运算)

使用主定理:0 <1,因此T(n)= O(n)(答案:A)

答案D到底如何?

1 个答案:

答案 0 :(得分:0)

首先避免使用链接,因为它们可能会失效。 您可以像我在下面完成的操作一样轻松键入图像中的代码

def select_number(A, low, high):
    if low == high:
        return A[low]
    mid = (low+high) // 2
    if A[mid] < A[mid+1]:
        return select_number(A, mid+1, high)  #line 6
    else:
        return select_number(A, low, mid)     #line 8

用户致电select_number(A, 0, len(A)-1)。 在不使用主定理的情况下,我们可以看到select_number的任何调用最多只能对其进行一次递归调用,每次都将输入空间减少一半。这类似于二进制搜索,因此您的预期运行时间应为log n

您分别计算第6行和第8行的运行时间,而它们却是互斥的:如果一个运行另一个,则不会。 所以不是2T(n / 2),只有T(n / 2),这就是D中的解决方案。