我有两个复发关系:
T(n) = T(n/2) + c // complexity O(logn)
T(n) = 2T(n/2) + c // is the complexity O(logn)????
c在两种情况下都是常数,即我们在重复的合并部分中不断地工作。
第一次重复是二进制搜索,我们不断丢弃数组的一半。
假设第二次重复从一个未排序的数组中找到最大元素,我们在每一步中将数组分成两部分,然后比较每个部分的结果以给出单个最大值。
在第一种情况下,我们没有遍历整个数组。在第二个我们正在遍历整体。现在,如果我为两者构建递归树,我将得到O(logn)的复杂性,因为两个树的高度相同。如果我错了,请纠正我。这是我心中的困惑,所以请帮我清除它。
答案 0 :(得分:0)
它的不是相同的复杂性。第二个类似于O(n)
查看此内容的一种简单方法是修复c = 0
和T(1) = a
(whare a
是常量)。
然后:
T(2) = 2T(1) = 2a
T(4) = 2T(2) = 4a
T(8) = 2T(4) = 8a
...
T(n) = n*a
您可以看到线性复杂性。