分析以下循环的运行时间

Analyze the runtime of following recurrence

a.T(n)=T(n/2)+n;T(1)=1

因为我知道T(n)=2T(n/2)+n的运行时间是O(nlogn),所以我认为答案是O(n^2),但正确答案是O (n)

b.T(n)=2T(n/2)+1;T(1)=1

因为我知道T(n)=2T(n/2)+n的运行时间是O(logn),所以我认为答案是O(log n),但正确答案是O( n)

我真的很困惑,因为 T(n)='work per level' x 'number of levels'。 我认为b中的工作级别数是O(logn)。

使用技巧替换

...如果您看到 T(n / 2) 等术语

一)

b)