大(o)记数logn或n?

时间:2019-10-08 18:05:53

标签: big-o

for(int i = 1; i < N; i = 2*i){

    for(j=0; j<i; j++){

    }
}

所以我刚刚了解到logN for循环是在语句中进行除法或乘法运算的方法,outerloop正在这样做。但是,由于内部循环随着加法递增,并且线性时间的复杂度高于logN,因此将此for循环视为O(n)?

1 个答案:

答案 0 :(得分:2)

内部函数为O(n),因为它在线性时间内运行,而外部函数为O(log n),因为每次迭代i都乘以2。因此,为了回答您的问题,是的,因为j ++在线性时间内运行,所以将内部循环视为O(n)。但是,由于O(n)的复杂度高于O(log n),所以O(n)具有更高的优先级,总运行时间为O(n)。