我试图理解典型二进制搜索算法具有运行时间O(log n)的证据。在该证明中,确定了一些输入大小n的通用运行时函数T(n),并且这用于显示大O。我理解其中的大部分内容,但不是最初的步骤之一。
证明首先确定如果n = 0则运行时间是恒定的,否则T(n) <= c + T(floor(n/2))
表示某个常数c。这对我来说很有意义。证明然后解释函数T(n)是非递减的,这对我来说也是有意义的。
然后它试图找到一个满足两个不等式的上界(对于n = 0和n!= 0)。它通过使用T(n)不递减以确定T(n)<= T(2 ceil(log n))的事实来做到这一点。这是我不理解的部分。这个界限来自哪里?为什么会选择这种特殊的不平等?我无法看到它的起源。
答案 0 :(得分:0)
因为我们有:
我们可以得出T(n)= T(2 ^(log n))&lt; = T(2 ^(ceil(log n)))使用T不衰减的事实。