Yes, nested loops are one way to quickly get a big O notation.
Typically (but not always) one loop nested in another will cause O(n2).
Think about it, the inner loop is executed i times, for each value of i.
The outer loop is executed n times.
thus you see a pattern of execution like this:
1 + 2 + 3 + 4 + ... + n times
Therefore, we can bound the number of code executions by saying it obviously executes more than n times (lower bound), but in terms of n how many times are we executing the code?
Well, mathematically we can say that it will execute no more than n2 times, giving us a worst case scenario and therefore our Big-Oh bound of O(n2). (For more information on how we can mathematically say this look at the Power Series)
Big-Oh doesn't always measure exactly how much work is being done, but usually gives a reliable approximation of worst case scenario.
4 yrs later Edit: Because this post seems to get a fair amount of traffic. I want to more fully explain how we bound the execution to O(n2) using the power series
From the website: 1+2+3+4...+n = (n2 + n)/2 = n2/2 + n/2. How, then are we turning this into O(n2)? What we're (basically) saying is that n2 >= n2/2 + n/2. Is this true? Let's do some simple algebra.
- Multiply both sides by 2 to get: 2n2 >= n2 + n?
- Expand 2n2 to get:n2 + n2 >= n2 + n?
- Subtract n2 from both sides to get: n2 >= n?
It should be clear that n2 >= n (not strictly greater than, because of the case where n=0 or 1), assuming that n is always an integer.
Actual Big O complexity is slightly different than what I just said, but this is the gist of it. In actuality, Big O complexity asks if there is a constant we can apply to one function such that it's larger than the other, for sufficiently large input (See the wikipedia page)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…