csnotes/370/notes/big-o.md
Medium Fries ea2aa8d2a6 yote
2019-03-15 01:26:26 -07:00

61 lines
1.2 KiB
Markdown

# Calculating Big O
Suppose we have the following function
```
func(x):
if cond1
O(n^2)
elif cond2
O(n)
else
O(1)
```
How do we define the _average_ time complexity:
* any input which isn't setup to be _special_
1. linear search which always finds the first elementO(1)
2. linear search that doen't find anything/last elementO(n)
With linear searches: finding an average item in the middle(somwhere) we have to cover:
* x% of the n size list
Since we drop the constants in time complexity expressions we thus end up with O(n).
## Heap Sort
Time Complexity Exercise
* Best:
* Average:
* Worst:
* Space:
## Insertion Sort
Time Complexity Exercise
* Best:
* Already sorted meaning we go through the whole list once
* O(n) - because we'll do the check into our left sub-list but we don't go into it leaving us as constant time spent per item ie c\*n
* Average:
* Pretty close to n^2 just for the sake of
* O(n^2)
* Worst:
* Going through the whole list sorting everything(backwards)
* O(n^2)
* must go through N items for each item
* Space:
# Notation
Time Complexity: O(n)
Space Complexity: OMEGA(n)
Both Complexity: THETA(n)
* such a complexity only exists if O(n) == OMEGA(n)