假设我们有一个虚构的合并排序,其中合并操作的成本O(n^2)
不是O(n)
. 然后根据主定理,我们有:
T(n) <= aT(n/b) + O(n^d)
T(n) <= 2T(n/2) + O(n^2)
由于a < b^d
,我们发现:
T(n) = O(n^d)
T(n) = O(n^2)
然而,直观地说,大 O 也是有道理的,T(n) = O(n^2 logn)
因为每次递归都会对数字执行二次 ( n^2
) 搜索。例如,在线性搜索的情况下,归并排序是O(n logn)
. 有谁知道为什么没有绑定O(n^2 logn)
?这可能与每次递归时搜索减半的事实有关吗?