算法的对数复杂度

Deq*_*ing 1 algorithm complexity-theory big-o time-complexity

我很难理解算法的对数复杂性.

例如

for(int j=1; j<=n; j*=2){
    ...
}
Run Code Online (Sandbox Code Playgroud)

其复杂程度为O(log 2 N)

那怎么回事j*=3?复杂性将是O(log 3 N)?

zw3*_*324 7

只要循环体是O(1),你就可以说是.

但是,请注意log 3 N = log 2 N/log 2 3,因此它也是O(log 2 N),因为常数因子无关紧要.

还要注意,从这个论证可以看出,对于任何固定常数k,O(log k N)也是O(log 2 N),因为你可以3k.

  • 这就是为什么对数复杂度通常只表示为"log N"而没有指定基数. (3认同)