我正在尝试使用 Big O 表示法找出 for 循环的复杂性。我以前在我的其他课程中也这样做过,但是这个比其他的更严格,因为它是在实际算法上的。代码如下:
for(i=n ; i>1 ; i/=2) //for any size n
{
for(j = 1; j < i; j++)
{
x+=a
}
}
指令 x+=a 总共执行了 n + n/2 + n/4 + ... + 1 次。
具有起始项 n 和共同比率 1/2 的 GP 的第一个 log2n 项之和为 (n (1-(1/2)log2n))/(1/2)。因此,第一个代码片段的复杂度为 O(n)。
正确的 ?