以下两种复发的复杂性是否相同?

时间:2018-02-11 11:21:45

标签: arrays time-complexity divide-and-conquer

我有两个复发关系:

T(n) = T(n/2) + c       // complexity O(logn)

T(n) = 2T(n/2) + c      // is the complexity O(logn)????

c在两种情况下都是常数,即我们在重复的合并部分中不断地工作。

第一次重复是二进制搜索,我们不断丢弃数组的一半。

假设第二次重复从一个未排序的数组中找到最大元素,我们在每一步中将数组分成两部分,然后比较每个部分的结果以给出单个最大值。

在第一种情况下,我们没有遍历整个数组。在第二个我们正在遍历整体。现在,如果我为两者构建递归树,我将得到O(logn)的复杂性,因为两个树的高度相同。如果我错了,请纠正我。这是我心中的困惑,所以请帮我清除它。

1 个答案:

答案 0 :(得分:0)

它的不是相同的复杂性。第二个类似于O(n)

查看此内容的一种简单方法是修复c = 0T(1) = a(whare a是常量)。

然后:

T(2) = 2T(1) = 2a
T(4) = 2T(2) = 4a
T(8) = 2T(4) = 8a
...
T(n) = n*a

您可以看到线性复杂性。