我被要求计算家庭作业的大 theta,但是这方面的讲座材料有点稀疏。
鉴于循环
for (x = 1; x <= n; x *= 2){
for(y = 1; y <= n; y += 2)
t++;
我已经制定了一个执行图表
x y
1 1, 3, 5, 7 ... n-2, n
2 1, 3, 5, 7 ... n-2, n
4 1, 3, 5, 7 ... n-2, n
8 1, 3, 5, 7 ... n-2, n
log n (n+1)/2
它的内部循环增量器让我失望。它执行 (n+1)/2 次,所以大 theta 必须是 (n log n + log n)/2。
我对么?