Nested for loop in Big Oh Complexity

后端 未结 3 624
南方客
南方客 2021-01-21 10:17
for(int i = 0; i < n; i++) {
    for(int j = 0; j < i; j++){
        //do swap stuff, constant time
    }
}

I read that single for loop is O(N) a

3条回答
  •  清歌不尽
    2021-01-21 10:46

    You need to use the ancient and obscure art of mathematics and calculate the number of times that the inner statement is executed.

    In your case, the inner loop is executed i times. The values for i are 0, 1, 2, ..., n-1. So you need a formula that calculates this sum, and that's your result.

    You read that a single loop is O (n). That's nonsense. It depends on the loop.

    for (i = 1; i < n; i *= n)
    

    doesn't iterate n times. It iterates log2 (n) times, which is usually an awful lot less. You need to look at the actual code and figure it out. There is no simple rule for this.

提交回复
热议问题