【发布时间】:2018-07-21 16:57:18
【问题描述】:
我有两个重复关系:
T(n) = T(n/2) + c // complexity O(logn)
T(n) = 2T(n/2) + c // is the complexity O(logn)????
c 在这两种情况下都是一个常数,即我们在递归的合并部分做不断的工作。
第一次重复是二分搜索,我们不断丢弃数组的一半。
假设第二次重复从未排序的数组中找到最大元素,我们在每个步骤中将数组分成两部分,然后比较每个部分的结果以给出单个最大值。
在第一种情况下,我们没有遍历整个数组。在第二个中,我们正在遍历整体。现在,如果我为两者构建递归树,我将得到 O(logn) 的复杂度,因为两棵树的高度相同。如果我错了,请纠正我。这是我心中的困惑,所以请帮助我清除它。
【问题讨论】:
-
主定理的情况是,当合并函数以 n 表示时。就我而言,它是恒定的,那么主定理如何适用??
-
@Dukeling 是case 1而不是case 2,请纠正自己。
-
@JotWaraich 据我了解,这是一个非常简单的大师定理案例。搞清楚你的基础,伙计。
-
是的@Sumeet Singh 在提出问题后想通了。
标签: arrays time-complexity divide-and-conquer